mirror of
https://github.com/netbirdio/IronRDP.git
synced 2026-05-22 18:43:12 -07:00
feat(tokio): add {split, unsplit}_tokio_framed()
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
committed by
Benoît Cortier
parent
b55924ee0a
commit
649613877e
@@ -5,10 +5,30 @@ use std::io;
|
||||
use std::pin::Pin;
|
||||
|
||||
use bytes::BytesMut;
|
||||
use tokio::io::{AsyncRead, AsyncWrite};
|
||||
use tokio::io::{AsyncRead, AsyncWrite, ReadHalf, WriteHalf};
|
||||
|
||||
pub type TokioFramed<S> = Framed<TokioStream<S>>;
|
||||
|
||||
pub fn split_tokio_framed<S>(framed: TokioFramed<S>) -> (TokioFramed<ReadHalf<S>>, TokioFramed<WriteHalf<S>>)
|
||||
where
|
||||
S: Sync + Unpin + AsyncRead + AsyncWrite,
|
||||
{
|
||||
let (stream, leftover) = framed.into_inner();
|
||||
let (read_half, write_half) = tokio::io::split(stream);
|
||||
let framed_read = TokioFramed::new_with_leftover(read_half, leftover);
|
||||
let framed_write = TokioFramed::new(write_half);
|
||||
(framed_read, framed_write)
|
||||
}
|
||||
|
||||
pub fn unsplit_tokio_framed<S>(reader: TokioFramed<ReadHalf<S>>, writer: TokioFramed<WriteHalf<S>>) -> TokioFramed<S>
|
||||
where
|
||||
S: Sync + Unpin + AsyncRead + AsyncWrite,
|
||||
{
|
||||
let (reader, leftover) = reader.into_inner();
|
||||
let writer = writer.into_inner_no_leftover();
|
||||
TokioFramed::new_with_leftover(reader.unsplit(writer), leftover)
|
||||
}
|
||||
|
||||
pub struct TokioStream<S> {
|
||||
inner: S,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user