connection_utils/utils/
create_framed_stream.rs1use std::pin::Pin;
2
3use tokio_util::codec::Framed;
4use tokio::io::{AsyncRead, AsyncWrite};
5use serde::{Serialize, de::DeserializeOwned};
6
7use crate::{codecs::GenericCodec, types::TFramedAsyncDuplex};
8
9pub fn create_framed_stream<
11 T: Serialize + DeserializeOwned,
12 TAsyncDuplex: AsyncRead + AsyncWrite + Send + Unpin + ?Sized + 'static,
13>(
14 stream: Box<TAsyncDuplex>,
15) -> TFramedAsyncDuplex<T, TAsyncDuplex> {
16 return Framed::new(
17 Pin::new(stream),
18 GenericCodec::<T>::new(),
19 );
20}