1extern crate tokio_io;
14
15extern crate bytes;
16
17#[macro_use]
18extern crate log;
19
20pub mod frame;
21pub mod args;
22
23pub use args::{FieldArgument, AmqpString};
24pub use frame::{Frame, FrameHeader, FramePayload};
25pub use frame::method;
26pub use frame::content_header;
27pub use frame::content_body;
28
29
30use bytes::BytesMut;
31use std::io::Error as IoError;
32
33pub struct Codec;
34
35impl tokio_io::codec::Decoder for Codec {
36 type Item = Frame;
37 type Error = IoError;
38
39 fn decode(&mut self, src: &mut BytesMut) -> Result<Option<Self::Item>, IoError> {
40 Ok(frame::decoder::decode_frame(src))
41 }
42}
43
44impl tokio_io::codec::Encoder for Codec {
45 type Item = Frame;
46 type Error = IoError;
47
48 fn encode(&mut self, item: Self::Item, dst: &mut BytesMut) -> Result<(), IoError> {
49 Ok(frame::encoder::encode_frame(item, dst))
50 }
51}