From fc64e11cdd35051a2ea87237f548ae0497a2f7f9 Mon Sep 17 00:00:00 2001 From: Max Audron Date: Wed, 29 Apr 2020 00:00:44 +0200 Subject: refactor everything --- src/lib.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index ed05773..215dcfc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,8 +1,5 @@ -pub mod consts; -pub mod protocol; - #[macro_use] -pub mod util; +mod util; #[cfg(feature = "client")] pub mod client; @@ -12,3 +9,55 @@ pub mod tests; #[macro_use] extern crate failure; + +pub mod message; +pub mod primitive; + +#[allow(dead_code)] +pub mod error; + +#[allow(unused_variables, dead_code)] +#[cfg(feature = "framing")] +pub mod frame; + +use failure::Error; + +/// Serialization of types and structs to the quassel byteprotocol +pub trait Serialize { + fn serialize(&self) -> Result, Error>; +} + +/// Serialization of UTF-8 based Strings to the quassel byteprotocol +pub trait SerializeUTF8 { + fn serialize_utf8(&self) -> Result, Error>; +} + +/// Deserialization of types and structs to the quassel byteprotocol +pub trait Deserialize { + fn parse(b: &[u8]) -> Result<(usize, Self), Error> + where + Self: std::marker::Sized; +} + +/// Deserialization of UTF-8 based Strings to the quassel byteprotocol +pub trait DeserializeUTF8 { + fn parse_utf8(b: &[u8]) -> Result<(usize, Self), Error> + where + Self: std::marker::Sized; +} + +/// HandshakeSerialize implements the serialization needed during the handhake phase. +/// +/// The protocol has some minor differences during this phase compared to the regular parsing. +pub trait HandshakeSerialize { + fn serialize(&self) -> Result, Error>; +} + +/// HandshakeDeserialize implements the deserialization needed during the handhake phase. +/// +/// The protocol has some minor differences during this phase compared to the regular parsing. +pub trait HandshakeDeserialize { + fn parse(b: &[u8]) -> Result<(usize, Self), Error> + where + Self: std::marker::Sized; +} -- cgit v1.2.3