messages rewrite

This commit is contained in:
2026-01-07 23:34:44 +01:00
parent f51b8e999c
commit dc1767abe4
5 changed files with 276 additions and 38 deletions

View File

@@ -1,3 +1,45 @@
use crate::server_communication::generate_id;
const ID: usize = 4;
const TYPE: usize = 5;
const LENGTH: usize = 7;
const EXTENSIONS: usize = 32;
const SIGNATURE: usize = 64;
const PING: u8 = 0;
const OK: u8 = 128;
const ERROR: u8 = 129;
const HELLO: u8 = 1;
const HELLOREPLY: u8 = 130;
const ROOTREQUEST: u8 = 2;
const ROOTREPLY: u8 = 131;
const DATUMREQUEST: u8 = 3;
const NODATUM: u8 = 133;
const DATUM: u8 = 132;
const NATTRAVERSALREQUEST: u8 = 4;
const NATTRAVERSALREQUEST2: u8 = 5;
pub fn constructMessage(msgtype: u8, payload: Vec<u8>, id: &[u8]) {
match msgtype {
HELLO => {
let message: Vec<u8> = vec![0u8; LENGTH + EXTENSIONS + payload.len() + SIGNATURE];
message.extend_from_slice(id);
message.extend_from_slice(0);
let name_vec = username.trim_end_matches(char::from(0)).as_bytes().to_vec();
HandshakeMessage {
id: id,
msg_type: 1,
length: length,
extensions: 0,
name: name_vec,
signature: vec![0; 64],
}
}
}
}
pub struct UDPMessage {
id: u32,
msg_type: u8,
@@ -15,6 +57,22 @@ pub struct HandshakeMessage {
pub signature: Vec<u8>,
}
pub struct DatumRootRequest {
pub id: u32,
msg_type: u8,
length: u16,
hash: Vec<u8>,
}
pub struct DatumReply {
pub id: u32,
msg_type: u8,
length: u16,
hash: Vec<u8>,
value: Vec<u8>,
signature: Vec<u8>,
}
impl UDPMessage {
pub fn ping(id: u32) -> UDPMessage {
UDPMessage {