1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use std::{
net::{SocketAddr, UdpSocket},
sync::{Arc, Mutex},
};
use crate::server_addr::ServerAddr;
#[derive(Clone)]
pub struct PacketSender {
server_addr: SocketAddr,
local_socket: Arc<Mutex<UdpSocket>>,
}
impl PacketSender {
pub fn new(server_addr: SocketAddr, local_socket: Arc<Mutex<UdpSocket>>) -> Self {
PacketSender {
server_addr,
local_socket,
}
}
pub fn send(&self, payload: &[u8]) {
if let Err(_) = self
.local_socket
.as_ref()
.lock()
.unwrap()
.send_to(payload, self.server_addr)
{
}
}
pub fn server_addr(&self) -> ServerAddr {
ServerAddr::Found(self.server_addr)
}
}