aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2020-04-29 00:00:44 +0200
committerMax Audron <audron@cocaine.farm>2020-04-29 00:00:44 +0200
commitfc64e11cdd35051a2ea87237f548ae0497a2f7f9 (patch)
treec57937731898b0ffd66d1d95bb0f181cae568c37 /src/lib.rs
parentfinish parsing of primitive types (diff)
refactor everything
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs57
1 files changed, 53 insertions, 4 deletions
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<Vec<u8>, Error>;
+}
+
+/// Serialization of UTF-8 based Strings to the quassel byteprotocol
+pub trait SerializeUTF8 {
+ fn serialize_utf8(&self) -> Result<Vec<u8>, 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<Vec<u8>, 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;
+}