aboutsummaryrefslogtreecommitdiff
path: root/src/protocol/primitive/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol/primitive/mod.rs')
-rw-r--r--src/protocol/primitive/mod.rs17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/protocol/primitive/mod.rs b/src/protocol/primitive/mod.rs
index 2cdd20a..42f6aae 100644
--- a/src/protocol/primitive/mod.rs
+++ b/src/protocol/primitive/mod.rs
@@ -5,26 +5,33 @@ pub mod variant;
pub use basic::*;
pub use variant::*;
+
pub mod serialize {
+ use crate::protocol::error::ErrorKind;
+
pub trait Serialize {
- fn serialize(&self) -> Vec<u8>;
+ fn serialize(&self) -> Result<Vec<u8>, ErrorKind>;
}
pub trait SerializeUTF8 {
- fn serialize_utf8(&self) -> Vec<u8>;
+ fn serialize_utf8(&self) -> Result<Vec<u8>, ErrorKind>;
}
}
pub mod deserialize {
+ use crate::protocol::error::ErrorKind;
+
pub trait Deserialize {
- fn parse(b: &[u8]) -> (usize, Self);
+ fn parse(b: &[u8]) -> Result<(usize, Self), ErrorKind> where Self: std::marker::Sized ;
}
pub trait DeserializeUTF8 {
- fn parse_utf8(b: &[u8]) -> (usize, Self);
+ fn parse_utf8(b: &[u8]) -> Result<(usize, Self), ErrorKind> where Self: std::marker::Sized ;
}
}
pub mod qread {
+ use crate::protocol::error::ErrorKind;
+
pub trait QRead {
- fn read<T: std::io::Read>(stream: &mut T, buf: &mut [u8]) -> usize;
+ fn read<T: std::io::Read>(stream: &mut T, buf: &mut [u8]) -> Result<usize, ErrorKind>;
}
}