messages rewrite
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user