wrym_udp 0.1.0

UDP transport for wrym
Documentation
use std::net::UdpSocket;

use wrym_transport::Transport;

pub struct UdpTransport {
    socket: UdpSocket,
}

impl UdpTransport {
    pub fn new(addr: &str) -> Self {
        let socket = UdpSocket::bind(addr).unwrap();
        socket.set_nonblocking(true).unwrap();

        Self { socket }
    }
}

impl Transport for UdpTransport {
    fn send_to(&self, addr: &str, bytes: &[u8]) {
        self.socket.send_to(bytes, addr).unwrap();
    }

    fn recv(&mut self) -> Option<(String, Vec<u8>)> {
        let mut buf = [0; 1024];

        if let Ok((len, addr)) = self.socket.recv_from(&mut buf) {
            return Some((addr.to_string(), buf[..len].to_vec()));
        }

        None
    }
}