diff options
author | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-15 21:54:25 +0100 |
---|---|---|
committer | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-15 21:55:47 +0100 |
commit | 1d4ebed25ff3e05d2fac70a040901fd3ea3029eb (patch) | |
tree | e4d8d52177ffd907064a6dc19d61bd3aa482ffcd /src/client.rs | |
parent | 45d7cd0049b9349de428945c4a7c9b73cb0f461d (diff) | |
download | mt_rudp-1d4ebed25ff3e05d2fac70a040901fd3ea3029eb.tar.xz |
Rework structure
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 } |