use std::io; use bytes::{Bytes, BytesMut}; use tokio_codec::{Decoder, Encoder}; /// Bytes codec. /// /// Reads/Writes chunks of bytes from a stream. #[derive(Debug, Copy, Clone)] pub struct BytesCodec; impl Encoder for BytesCodec { type Item = Bytes; type Error = io::Error; fn encode(&mut self, item: Bytes, dst: &mut BytesMut) -> Result<(), Self::Error> { dst.extend_from_slice(&item[..]); Ok(()) } } impl Decoder for BytesCodec { type Item = BytesMut; type Error = io::Error; fn decode(&mut self, src: &mut BytesMut) -> Result, Self::Error> { if src.is_empty() { Ok(None) } else { Ok(Some(src.take())) } } }