server/
server.rs

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}