use crate::Deserialize;
use crate::Serialize;
pub struct Init {
pub tls: bool,
pub compression: bool,
}
impl Init {
pub fn new() -> Self {
Self {
tls: false,
compression: false,
}
}
pub fn compression(mut self, v: bool) {
self.compression = v
}
pub fn tls(mut self, v: bool) {
self.tls = v
}
pub fn serialize(self) -> Vec<u8> {
let mut handshake: u32 = 0x42b33f00;
if self.tls {
handshake |= 0x01;
}
if self.compression {
handshake |= 0x02;
}
return handshake.serialize().unwrap();
}
pub fn parse(buf: &[u8]) -> Self {
let (_, handshake) = u32::parse(&buf[0..4]).unwrap();
let mut init = Self {
tls: false,
compression: false,
};
if (handshake & 0x01) >= 1 {
init.tls = true
}
if (handshake & 0x02) >= 1 {
init.tls = true
}
return init;
}
}