diff options
author | hozan23 <hozan23@proton.me> | 2023-11-18 13:36:19 +0300 |
---|---|---|
committer | hozan23 <hozan23@proton.me> | 2023-11-19 04:37:50 +0300 |
commit | 938b29d418a9df2f93ee273a394f34adc99ea25d (patch) | |
tree | f8adfeede7c6f56091ef6a018820fa0b52f38bf3 /net | |
parent | 0d6c8ad2ed66ff7bd1078be9ea7b582262a12d86 (diff) |
net: improve Conn API
Diffstat (limited to 'net')
-rw-r--r-- | net/src/connection.rs | 10 | ||||
-rw-r--r-- | net/src/transports/tcp.rs | 17 | ||||
-rw-r--r-- | net/src/transports/udp.rs | 12 | ||||
-rw-r--r-- | net/src/transports/unix.rs | 17 |
4 files changed, 30 insertions, 26 deletions
diff --git a/net/src/connection.rs b/net/src/connection.rs index 518ccfd..53bcdeb 100644 --- a/net/src/connection.rs +++ b/net/src/connection.rs @@ -20,10 +20,10 @@ pub trait Connection: Send + Sync { fn local_endpoint(&self) -> Result<Endpoint>; /// Reads data from this connection. - async fn recv(&self, buf: &mut [u8]) -> Result<usize>; + async fn read(&self, buf: &mut [u8]) -> Result<usize>; - /// Sends data to this connection - async fn send(&self, buf: &[u8]) -> Result<usize>; + /// Writes data to this connection + async fn write(&self, buf: &[u8]) -> Result<usize>; } /// Connects to the provided endpoint. @@ -40,10 +40,10 @@ pub trait Connection: Send + Sync { /// /// let conn = dial(&endpoint).await.unwrap(); /// -/// conn.send(b"MSG").await.unwrap(); +/// conn.write(b"MSG").await.unwrap(); /// /// let mut buffer = [0;32]; -/// conn.recv(&mut buffer).await.unwrap(); +/// conn.read(&mut buffer).await.unwrap(); /// }; /// /// ``` diff --git a/net/src/transports/tcp.rs b/net/src/transports/tcp.rs index 5ff7b28..9b2b928 100644 --- a/net/src/transports/tcp.rs +++ b/net/src/transports/tcp.rs @@ -10,7 +10,7 @@ use crate::{ connection::Connection, endpoint::{Addr, Endpoint, Port}, listener::Listener, - Result, + Error, Result, }; /// TCP network connection implementations of the `Connection` trait. @@ -42,14 +42,17 @@ impl Connection for TcpConn { Ok(Endpoint::new_tcp_addr(&self.inner.local_addr()?)) } - async fn recv(&self, buf: &mut [u8]) -> Result<usize> { - self.read.lock().await.read_exact(buf).await?; - Ok(buf.len()) + async fn read(&self, buf: &mut [u8]) -> Result<usize> { + self.read.lock().await.read(buf).await.map_err(Error::from) } - async fn send(&self, buf: &[u8]) -> Result<usize> { - self.write.lock().await.write_all(buf).await?; - Ok(buf.len()) + async fn write(&self, buf: &[u8]) -> Result<usize> { + self.write + .lock() + .await + .write(buf) + .await + .map_err(Error::from) } } diff --git a/net/src/transports/udp.rs b/net/src/transports/udp.rs index 27fb9ae..2050226 100644 --- a/net/src/transports/udp.rs +++ b/net/src/transports/udp.rs @@ -6,7 +6,7 @@ use smol::net::UdpSocket; use crate::{ connection::Connection, endpoint::{Addr, Endpoint, Port}, - Result, + Error, Result, }; /// UDP network connection implementations of the `Connection` trait. @@ -47,14 +47,12 @@ impl Connection for UdpConn { Ok(Endpoint::new_udp_addr(&self.inner.local_addr()?)) } - async fn recv(&self, buf: &mut [u8]) -> Result<usize> { - let size = self.inner.recv(buf).await?; - Ok(size) + async fn read(&self, buf: &mut [u8]) -> Result<usize> { + self.inner.recv(buf).await.map_err(Error::from) } - async fn send(&self, buf: &[u8]) -> Result<usize> { - let size = self.inner.send(buf).await?; - Ok(size) + async fn write(&self, buf: &[u8]) -> Result<usize> { + self.inner.send(buf).await.map_err(Error::from) } } diff --git a/net/src/transports/unix.rs b/net/src/transports/unix.rs index c89832e..1a32311 100644 --- a/net/src/transports/unix.rs +++ b/net/src/transports/unix.rs @@ -6,7 +6,7 @@ use smol::{ net::unix::{UnixListener, UnixStream}, }; -use crate::{connection::Connection, endpoint::Endpoint, listener::Listener, Result}; +use crate::{connection::Connection, endpoint::Endpoint, listener::Listener, Error, Result}; /// Unix domain socket implementations of the `Connection` trait. pub struct UnixConn { @@ -37,14 +37,17 @@ impl Connection for UnixConn { Ok(Endpoint::new_unix_addr(&self.inner.local_addr()?)) } - async fn recv(&self, buf: &mut [u8]) -> Result<usize> { - self.read.lock().await.read_exact(buf).await?; - Ok(buf.len()) + async fn read(&self, buf: &mut [u8]) -> Result<usize> { + self.read.lock().await.read(buf).await.map_err(Error::from) } - async fn send(&self, buf: &[u8]) -> Result<usize> { - self.write.lock().await.write_all(buf).await?; - Ok(buf.len()) + async fn write(&self, buf: &[u8]) -> Result<usize> { + self.write + .lock() + .await + .write(buf) + .await + .map_err(Error::from) } } |