1#![feature(test)]
2
3pub mod codec;
4pub mod fixed_codec;
5pub mod traits;
6pub mod types;
7
8use std::error::Error;
9
10pub use bytes::{Buf, BufMut, Bytes, BytesMut};
11use derive_more::{Constructor, Display};
12
13#[derive(Debug, Clone)]
14pub enum ProtocolErrorKind {
15 API,
17 Consensus,
18 Executor,
19 Mempool,
20 Network,
21 Storage,
22 Runtime,
23 Binding,
24 BindingMacro,
25 Service,
26 Main,
27
28 Codec,
30
31 FixedCodec,
33
34 Types,
36}
37
38#[derive(Debug, Constructor, Display)]
40#[display(fmt = "[ProtocolError] Kind: {:?} Error: {:?}", kind, error)]
41pub struct ProtocolError {
42 kind: ProtocolErrorKind,
43 error: Box<dyn Error + Send>,
44}
45
46impl From<ProtocolError> for Box<dyn Error + Send> {
47 fn from(error: ProtocolError) -> Self {
48 Box::new(error) as Box<dyn Error + Send>
49 }
50}
51
52impl Error for ProtocolError {}
53
54pub type ProtocolResult<T> = Result<T, ProtocolError>;