Mercurial > tablet-emu
comparison 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 |
comparison
equal
deleted
inserted
replaced
18:3f7b7a3ad8fe | 19:ba09079686a0 |
---|---|
41 | 41 |
42 let socket = UdpSocket::bind(address)?; | 42 let socket = UdpSocket::bind(address)?; |
43 println!("Listening on {:?}", socket); | 43 println!("Listening on {:?}", socket); |
44 println!("Here is an example client: https://hg.linkmauve.fr/remote-gamepad"); | 44 println!("Here is an example client: https://hg.linkmauve.fr/remote-gamepad"); |
45 | 45 |
46 let mut event: Event = Default::default(); | |
47 let mut last = Some((0., 0.)); | 46 let mut last = Some((0., 0.)); |
48 state.set_size(320, 240); | 47 state.set_size(320, 240); |
49 loop { | 48 loop { |
50 // TODO: Yolo-alignment. | 49 let mut buf: [u8; 16] = Default::default(); |
51 let buf: &mut [u8; 16] = unsafe { std::mem::transmute(&mut event) }; | 50 let (amount, source) = socket.recv_from(&mut buf)?; |
52 let (amount, source) = socket.recv_from(buf)?; | |
53 if amount != std::mem::size_of::<Event>() { | 51 if amount != std::mem::size_of::<Event>() { |
54 eprintln!("Invalid data length: {}", amount); | 52 eprintln!("Invalid data length: {}", amount); |
55 continue; | 53 continue; |
56 } | 54 } |
55 let event: Event = bincode::deserialize(&buf).unwrap(); | |
57 println!("{:?} from {:?}", event, source); | 56 println!("{:?} from {:?}", event, source); |
58 if event.buttons.contains(Buttons::A) { | 57 if event.buttons.contains(Buttons::A) { |
59 state.select_tool(Key::ButtonToolPen); | 58 state.select_tool(Key::ButtonToolPen); |
60 } else if event.buttons.contains(Buttons::B) { | 59 } else if event.buttons.contains(Buttons::B) { |
61 state.select_tool(Key::ButtonToolRubber); | 60 state.select_tool(Key::ButtonToolRubber); |