digitalis_server/
client.rs

1use digitalis_core::{DigitalisError, DigitalisResult};
2use tokio::sync::mpsc::Sender;
3use tokio_tungstenite::tungstenite::Message;
4
5pub type ClientId = u32;
6pub type MessageSender = Sender<Message>;
7
8#[derive(Debug, Clone)]
9pub struct Client {
10    id: ClientId,
11    sender: MessageSender,
12}
13
14impl Client {
15    pub const fn new(id: ClientId, sender: MessageSender) -> Self {
16        Self { id, sender }
17    }
18
19    pub const fn id(&self) -> ClientId {
20        self.id
21    }
22
23    pub fn nonblocking_send(&self, msg: Message) -> DigitalisResult<()> {
24        self.sender
25            .try_send(msg)
26            .map_err(|_| DigitalisError::ChannelSendError)
27    }
28}