1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
mod codec; mod sink; mod source; mod vm_value_builder; mod vm_value_codec; pub use self::sink::Sink; pub use self::source::Source; use crate::prelude::*; pub(crate) mod event_builder; pub use event_builder::EventBuilder; pub(crate) use event_builder::VmValueBuilderCommon; pub use vm_value_builder::{VmValueBuilder, VmValueParser}; pub use vm_value_codec::VmValueDecoder; pub use vm_value_codec::VmValueEncoder; pub use ontio_derive_codec::*; #[derive(Debug)] pub enum Error { UnexpectedEOF, IrregularData, InvalidUtf8, TypeInconsistency, LengthInconsistency, } pub trait Encoder { fn encode(&self, sink: &mut Sink); } pub trait Dispatcher { fn dispatch(&mut self, payload: &[u8]) -> Vec<u8>; } #[doc(hidden)] pub trait Decoder<'a>: Sized { fn decode(source: &mut Source<'a>) -> Result<Self, Error>; }