]> git.lizzy.rs Git - mt_rudp.git/blobdiff - src/client.rs
async
[mt_rudp.git] / src / client.rs
index 81c1bfb387fd5ac9ccdecbd08507545e8cbce4f8..97a18d7869be644325269e95da41e6af04964216 100644 (file)
@@ -1,13 +1,14 @@
 use crate::*;
-use std::{io, net, sync::Arc};
+use std::{io, sync::Arc};
+use tokio::net;
 
 pub struct Sender {
     sock: Arc<net::UdpSocket>,
 }
 
 impl UdpSender for Sender {
-    fn send(&self, data: Vec<u8>) -> io::Result<()> {
-        self.sock.send(&data)?;
+    async fn send(&self, data: Vec<u8>) -> io::Result<()> {
+        self.sock.send(&data).await?;
         Ok(())
     }
 }
@@ -17,20 +18,20 @@ pub struct Receiver {
 }
 
 impl UdpReceiver for Receiver {
-    fn recv(&self) -> io::Result<Vec<u8>> {
+    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)?;
+        let len = self.sock.recv(&mut buffer).await?;
         buffer.truncate(len);
 
         Ok(buffer)
     }
 }
 
-pub fn connect(addr: &str) -> io::Result<(RudpSender<Sender>, RudpReceiver<Sender>)> {
-    let sock = Arc::new(net::UdpSocket::bind("0.0.0.0:0")?);
-    sock.connect(addr)?;
+pub async fn connect(addr: &str) -> io::Result<(RudpSender<Sender>, RudpReceiver<Sender>)> {
+    let sock = Arc::new(net::UdpSocket::bind("0.0.0.0:0").await?);
+    sock.connect(addr).await?;
 
     Ok(new(
         PeerID::Srv as u16,