diff options
Diffstat (limited to 'src/client.rs')
-rw-r--r-- | src/client.rs | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/src/client.rs b/src/client.rs index 6785a1f..c4922ec 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,48 +1,44 @@ -use crate::prelude::*; +use super::*; use async_trait::async_trait; use std::{io, sync::Arc}; use tokio::net; -pub struct Sender { - sock: Arc<net::UdpSocket>, -} +#[derive(Debug)] +pub struct ToSrv(Arc<net::UdpSocket>); + +#[derive(Debug)] +pub struct FromSrv(Arc<net::UdpSocket>); #[async_trait] -impl UdpSender for Sender { +impl UdpSender for ToSrv { async fn send(&self, data: &[u8]) -> io::Result<()> { - self.sock.send(data).await?; + self.0.send(data).await?; Ok(()) } } -pub struct Receiver { - sock: Arc<net::UdpSocket>, -} - #[async_trait] -impl UdpReceiver for Receiver { +impl UdpReceiver for FromSrv { async fn recv(&self) -> io::Result<Vec<u8>> { let mut buffer = Vec::new(); buffer.resize(UDP_PKT_SIZE, 0); - let len = self.sock.recv(&mut buffer).await?; + let len = self.0.recv(&mut buffer).await?; buffer.truncate(len); Ok(buffer) } } -pub async fn connect(addr: &str) -> io::Result<(RudpSender<Sender>, RudpReceiver<Sender>)> { +pub async fn connect(addr: &str) -> io::Result<(RudpSender<ToSrv>, RudpReceiver<ToSrv>)> { let sock = Arc::new(net::UdpSocket::bind("0.0.0.0:0").await?); sock.connect(addr).await?; new( PeerID::Srv as u16, PeerID::Nil as u16, - Sender { - sock: Arc::clone(&sock), - }, - Receiver { sock }, + ToSrv(Arc::clone(&sock)), + FromSrv(sock), ) .await } |