use message_io::events::{EventQueue};
use message_io::network::{NetworkManager, NetEvent};
use serde::{Serialize, Deserialize};
#[derive(Deserialize)]
enum InputMessage {
HelloServer(String),
}
#[derive(Serialize)]
enum OutputMessage {
HelloClient(String),
}
enum Event {
Network(NetEvent<InputMessage>),
}
fn main() {
let mut event_queue = EventQueue::new();
let sender = event_queue.sender().clone();
let mut network = NetworkManager::new(move |net_event| sender.send(Event::Network(net_event)));
let addr = "0.0.0.0:3005";
network.listen_tcp(addr).unwrap();
network.listen_udp(addr).unwrap();
loop {
match event_queue.receive() { Event::Network(net_event) => match net_event {
NetEvent::Message(endpoint, message) => match message {
InputMessage::HelloServer(msg) => {
println!("Received: {}", msg);
network.send(endpoint, OutputMessage::HelloClient(msg)).unwrap();
},
},
NetEvent::AddedEndpoint(_endpoint) => println!("TCP Client connected"),
NetEvent::RemovedEndpoint(_endpoint) => println!("TCP Client disconnected"),
},
}
}
}