diff options
Diffstat (limited to 'src/proto.rs')
-rw-r--r-- | src/proto.rs | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/proto.rs b/src/proto.rs index 3e9fe20..7b8aa4b 100644 --- a/src/proto.rs +++ b/src/proto.rs @@ -6,16 +6,12 @@ use log::trace; use async_std::io::prelude::WriteExt; use async_std::io::ReadExt; -use tokio::io::{ReadHalf, WriteHalf}; -use tokio::net::TcpStream; use tokio::sync::mpsc; use async_trait::async_trait; use crate::error::*; -use kuska_handshake::async_std::{BoxStreamRead, BoxStreamWrite, TokioCompat}; - /// Priority of a request (click to read more about priorities). /// /// This priority value is used to priorize messages @@ -92,11 +88,14 @@ impl SendQueue { #[async_trait] pub(crate) trait SendLoop: Sync { - async fn send_loop( + async fn send_loop<W>( self: Arc<Self>, mut msg_recv: mpsc::UnboundedReceiver<Option<(RequestID, RequestPriority, Vec<u8>)>>, - mut write: BoxStreamWrite<TokioCompat<WriteHalf<TcpStream>>>, - ) -> Result<(), Error> { + mut write: W, + ) -> Result<(), Error> + where + W: WriteExt + Unpin + Send + Sync, + { let mut sending = SendQueue::new(); let mut should_exit = false; while !should_exit || !sending.is_empty() { @@ -167,10 +166,10 @@ pub(crate) trait RecvLoop: Sync + 'static { // Returns true if we should stop receiving after this async fn recv_handler(self: Arc<Self>, id: RequestID, msg: Vec<u8>); - async fn recv_loop( - self: Arc<Self>, - mut read: BoxStreamRead<TokioCompat<ReadHalf<TcpStream>>>, - ) -> Result<(), Error> { + async fn recv_loop<R>(self: Arc<Self>, mut read: R) -> Result<(), Error> + where + R: ReadExt + Unpin + Send + Sync, + { let mut receiving = HashMap::new(); loop { trace!("recv_loop: reading packet"); |