use std::pin::Pin;
use tokio_util::codec::Framed;
use tokio::io::{AsyncRead, AsyncWrite};
use serde::{Serialize, de::DeserializeOwned};
use crate::{codecs::GenericCodec, types::TFramedAsyncDuplex};
pub fn create_framed_stream<
T: Serialize + DeserializeOwned,
TAsyncDuplex: AsyncRead + AsyncWrite + Send + Unpin + ?Sized + 'static,
>(
stream: Box<TAsyncDuplex>,
) -> TFramedAsyncDuplex<T, TAsyncDuplex> {
return Framed::new(
Pin::new(stream),
GenericCodec::<T>::new(),
);
}