use crate::bufext::{BufExt, BufMutExt};
use bytes::{Bytes, BytesMut};
use std::io::Cursor;
pub type FramingEncoded<F> = <F as Framing>::EncBuf;
pub type FramingEncodedFinal<F> = <<F as Framing>::EncBuf as BufMutExt>::Final;
pub type FramingDecoded<F> = <F as Framing>::DecBuf;
pub trait Framing {
type EncBuf: BufMutExt + Send + 'static;
type DecBuf: BufExt + Send + 'static;
type Meta;
fn enc_with_capacity(cap: usize) -> Self::EncBuf;
fn get_meta(&self) -> Self::Meta;
}
impl Framing for Bytes {
type EncBuf = BytesMut;
type DecBuf = Cursor<Bytes>;
type Meta = ();
fn enc_with_capacity(cap: usize) -> Self::EncBuf {
BytesMut::with_capacity(cap)
}
fn get_meta(&self) {}
}