Skip to content
Snippets Groups Projects
Commit 24034830 authored by Hemmerle Lionel's avatar Hemmerle Lionel
Browse files

udp partie 3

parent 1832879a
Branches udp
No related tags found
No related merge requests found
......@@ -24,15 +24,27 @@ pub fn udp_recv_thread(socket: Arc<UdpSocket>, recv_send: Vec<Sender<UdpData>>)
Ok((size, SocketAddr::V4(addr))) => {
println!("{:?}", buf.split_at(size).0);
let (id_src, id_dst, magic, payload) = match buf[0] {
x if x == (Magic::Hack as u8) => {
match buf[0] {
x if x == (Magic::Hinit as u8) => {
let id_src = ((buf[1] as u32) << 24)
| ((buf[2] as u32) << 16)
| ((buf[3] as u32) << 8)
| (buf[4] as u32);
(Some(id_src), None, Magic::Hack, buf.split_at(5).1.to_vec())
for sender in &recv_send {
sender
.send(UdpData {
magic: Magic::Hinit,
id_src: Some(id_src),
id_dst: None,
addr,
payload: buf.split_at(5).1.to_vec(),
})
.unwrap();
}
}
x if x == (Magic::Hinit as u8) => {
x if x == (Magic::Hack as u8) => {
let id_dst = ((buf[1] as u32) << 24)
| ((buf[2] as u32) << 16)
| ((buf[3] as u32) << 8)
......@@ -41,29 +53,38 @@ pub fn udp_recv_thread(socket: Arc<UdpSocket>, recv_send: Vec<Sender<UdpData>>)
| ((buf[6] as u32) << 16)
| ((buf[7] as u32) << 8)
| (buf[8] as u32);
(
Some(id_src),
Some(id_dst),
Magic::Hinit,
buf.split_at(9).1.to_vec(),
)
if (id_dst as usize) < recv_send.len() {
recv_send[id_dst as usize]
.send(UdpData {
magic: Magic::Hack,
id_src: Some(id_src),
id_dst: Some(id_dst),
addr,
payload: buf.split_at(9).1.to_vec(),
})
.unwrap();
}
}
x if x == (Magic::Hdata as u8) => {
let id_dst = ((buf[1] as u32) << 24)
| ((buf[2] as u32) << 16)
| ((buf[3] as u32) << 8)
| (buf[4] as u32);
(None, Some(id_dst), Magic::Hdata, buf.split_at(5).1.to_vec())
}
_ => panic!("invalid magic number"),
};
let data = UdpData {
addr,
id_dst,
id_src,
magic,
payload,
if (id_dst as usize) < recv_send.len() {
recv_send[id_dst as usize]
.send(UdpData {
magic: Magic::Hdata,
id_src: None,
id_dst: Some(id_dst),
addr,
payload: buf.split_at(5).1.to_vec(),
})
.unwrap();
}
}
_ => (),
};
}
Ok(_) => (),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment