]> git.lizzy.rs Git - mt_rudp.git/blobdiff - src/client.rs
Rework structure
[mt_rudp.git] / src / client.rs
index 6785a1f0f964f034317c2962274ca3809e6c8d09..c4922ec9c7d45c7bc45440f2f3bd733efb7906de 100644 (file)
@@ -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
 }