diff src/bin/server.rs @ 19:ba09079686a0

Add support for different endianness between client and server.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Thu, 26 Aug 2021 23:43:36 +0200
parents 3f7b7a3ad8fe
children
line wrap: on
line diff
--- a/src/bin/server.rs
+++ b/src/bin/server.rs
@@ -43,17 +43,16 @@ pub fn run_server(address: &str) -> io::
     println!("Listening on {:?}", socket);
     println!("Here is an example client: https://hg.linkmauve.fr/remote-gamepad");
 
-    let mut event: Event = Default::default();
     let mut last = Some((0., 0.));
     state.set_size(320, 240);
     loop {
-        // TODO: Yolo-alignment.
-        let buf: &mut [u8; 16] = unsafe { std::mem::transmute(&mut event) };
-        let (amount, source) = socket.recv_from(buf)?;
+        let mut buf: [u8; 16] = Default::default();
+        let (amount, source) = socket.recv_from(&mut buf)?;
         if amount != std::mem::size_of::<Event>() {
             eprintln!("Invalid data length: {}", amount);
             continue;
         }
+        let event: Event = bincode::deserialize(&buf).unwrap();
         println!("{:?} from {:?}", event, source);
         if event.buttons.contains(Buttons::A) {
             state.select_tool(Key::ButtonToolPen);