use super::*;
#[derive(Debug)]
pub struct PairStreamHandle {
push: PushAsyncHandle,
pull: PullAsyncStream,
}
impl AsyncStreamContext for PairStreamHandle {
fn new(socket: NngSocket, buffer: usize) -> Result<Self> {
let push = PushAsyncHandle::new(socket.clone())?;
let pull = PullAsyncStream::new(socket, buffer)?;
let ctx = Self { push, pull };
Ok(ctx)
}
}
impl AsyncPush for PairStreamHandle {
fn send(&mut self, msg: NngMsg) -> AsyncUnit {
self.push.send(msg)
}
}
impl AsyncPull for PairStreamHandle {
fn receive(&mut self) -> Option<mpsc::Receiver<Result<NngMsg>>> {
self.pull.receive()
}
}