1extern crate reliudp;
2use std::sync::Arc;
3
4fn generate_really_big_message(i: u8) -> Arc<[u8]> {
5 let really_big_message: Vec<u8> = (0..2000).map(|_v| i).collect();
6 let really_big_message: Arc<[u8]> = Arc::from(really_big_message.into_boxed_slice());
7 really_big_message
8}
9
10fn main() -> Result<(), Box<dyn (::std::error::Error)>> {
11 let mut server = reliudp::RUdpServer::new("0.0.0.0:61244").expect("Failed to create server");
12
13 let mut n = 0;
14 for i in 0u64.. {
15 server.next_tick()?;
16 for server_event in server.drain_events() {
17 println!("Server: Incoming event {:?}", server_event);
18 }
19
20 if i % 300 == 0 && server.remotes_len() > 0 {
21 let big_message = generate_really_big_message(n);
22 println!("Sending (n={:?}) {:?} bytes to all {:?} remotes", n, big_message.as_ref().len(), server.remotes_len());
23 if n % 2 == 0 {
24 server.send_data(&big_message, reliudp::MessageType::KeyMessage);
25 } else {
26 server.send_data(&big_message, reliudp::MessageType::Forgettable);
27 }
28 n += 1;
29
30 for (address, socket) in server.iter() {
31 println!("\tPing to remote {:?} is {:?}", address, socket.ping());
32 }
33 }
34
35 ::std::thread::sleep(::std::time::Duration::from_millis(5));
36 }
37 Ok(())
38}