battleye_rust/socket/
udp.rs

1use crate::socket::action::SocketAction;
2use std::io::Error;
3use std::net::{Ipv4Addr, UdpSocket};
4
5pub struct UdpSocketConnection {
6    udp_socket: UdpSocket,
7}
8
9impl SocketAction for UdpSocketConnection {
10    /// Disconnect socket
11    fn disconnect(&mut self) -> Result<(), Error> {
12        self.udp_socket = UdpSocket::bind((Ipv4Addr::UNSPECIFIED, 0))?;
13        Ok(())
14    }
15
16    /// Listen to socket. It will fail if socket is not connector or disconnected.
17    fn listen(&self, buffer_size: usize) -> Result<Vec<u8>, Error> {
18        let mut buffer_data = vec![0; buffer_size];
19        self.udp_socket.recv(&mut buffer_data)?;
20        Ok(buffer_data.to_vec())
21    }
22
23    /// Send bytes to server
24    fn send(&self, data: &[u8]) -> std::io::Result<usize> {
25        self.udp_socket.send(data)
26    }
27}
28
29impl UdpSocketConnection {
30    /// Create new UdpSocketConnection
31    pub fn new(udp_socket: UdpSocket) -> Self {
32        Self { udp_socket }
33    }
34}