use crate::{
message::Message,
streams::{error::RecvError, mpsc},
};
use super::{Receiver, Sender};
use async_trait::async_trait;
pub mod rx;
pub mod tx;
pub struct UserCon {
receiver: user_con::OwnedReceiver,
sender: user_con::OwnedSender,
}
impl UserCon {
pub(crate) fn new(recv: user_con::OwnedReceiver, send: user_con::OwnedSender) -> Self {
Self {
receiver: recv,
sender: send,
}
}
pub fn into_split(self) -> (user_con::OwnedReceiver, user_con::OwnedSender) {
(self.receiver, self.sender)
}
}
#[async_trait]
impl Receiver for UserCon {
type ReceivingError = RecvError;
async fn recv_msg(&mut self) -> Result<Message, Self::ReceivingError> {
self.receiver.recv_msg().await
}
}
#[async_trait]
impl Sender for UserCon {
type SendingError = tokio::sync::mpsc::error::SendError<Message>;
async fn send_msg(&self, data: Vec<u8>, length: u64) -> Result<(), Self::SendingError> {
self.sender.send_msg(data, length).await
}
}
pub mod user_con;