digitalis-server 0.0.0

Base server module for Foxflove
Documentation
use digitalis_core::{DigitalisError, DigitalisResult};
use tokio::sync::mpsc::Sender;
use tokio_tungstenite::tungstenite::Message;

pub type ClientId = u32;
pub type MessageSender = Sender<Message>;

#[derive(Debug, Clone)]
pub struct Client {
    id: ClientId,
    sender: MessageSender,
}

impl Client {
    pub const fn new(id: ClientId, sender: MessageSender) -> Self {
        Self { id, sender }
    }

    pub const fn id(&self) -> ClientId {
        self.id
    }

    pub fn nonblocking_send(&self, msg: Message) -> DigitalisResult<()> {
        self.sender
            .try_send(msg)
            .map_err(|_| DigitalisError::ChannelSendError)
    }
}