diff options
author | metamuffin <metamuffin@disroot.org> | 2024-11-19 02:08:52 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-11-19 02:08:52 +0100 |
commit | cbc111f90b5facc1f2a9dd79ced216279d6260af (patch) | |
tree | fa5a1d2d67874413d8e66673825c6789e8cc0945 /src/transport/tcp.rs | |
parent | 2d9a31244eab6d3a9871369d3148de253e902d36 (diff) | |
download | sip-rs-cbc111f90b5facc1f2a9dd79ced216279d6260af.tar sip-rs-cbc111f90b5facc1f2a9dd79ced216279d6260af.tar.bz2 sip-rs-cbc111f90b5facc1f2a9dd79ced216279d6260af.tar.zst |
move files + rtp parser
Diffstat (limited to 'src/transport/tcp.rs')
-rw-r--r-- | src/transport/tcp.rs | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/src/transport/tcp.rs b/src/transport/tcp.rs deleted file mode 100644 index efe433d..0000000 --- a/src/transport/tcp.rs +++ /dev/null @@ -1,48 +0,0 @@ -use super::Transport; -use crate::encoding::Message; -use anyhow::Result; -use log::debug; -use std::str::FromStr; -use tokio::{ - io::{AsyncBufReadExt, AsyncWriteExt, BufReader, BufWriter}, - net::{ - tcp::{OwnedReadHalf, OwnedWriteHalf}, - TcpStream, - }, - sync::Mutex, -}; - -pub struct TcpTransport { - write: Mutex<BufWriter<OwnedWriteHalf>>, - read: Mutex<BufReader<OwnedReadHalf>>, -} - -impl TcpTransport { - pub async fn new(stream: TcpStream) -> Result<Self> { - let (read, write) = stream.into_split(); - Ok(Self { - write: BufWriter::new(write).into(), - read: BufReader::new(read).into(), - }) - } -} - -impl Transport for TcpTransport { - async fn recv(&self) -> Result<Message> { - let mut g = self.read.lock().await; - let mut message = String::new(); - while !message.ends_with("\r\n\r\n") { - g.read_line(&mut message).await?; - } - let mesg = Message::from_str(message.trim())?; - debug!("<- {mesg}"); - Ok(mesg) - } - async fn send(&self, request: Message) -> Result<()> { - debug!("-> {request}"); - let mut g = self.write.lock().await; - g.write_all(format!("{request}").as_bytes()).await?; - g.flush().await?; - Ok(()) - } -} |