elif_http/websocket/channel/
message.rs

1//! Channel message types and functionality
2
3use super::super::types::{ConnectionId, WebSocketMessage};
4use super::types::ChannelId;
5use serde::{Deserialize, Serialize};
6use std::time::SystemTime;
7use uuid::Uuid;
8
9/// A message within a channel context
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct ChannelMessage {
12    pub id: Uuid,
13    pub channel_id: ChannelId,
14    pub sender_id: ConnectionId,
15    pub content: WebSocketMessage,
16    pub timestamp: SystemTime,
17    pub sender_nickname: Option<String>,
18}
19
20impl ChannelMessage {
21    /// Create a new channel message
22    pub fn new(
23        channel_id: ChannelId,
24        sender_id: ConnectionId,
25        content: WebSocketMessage,
26        sender_nickname: Option<String>,
27    ) -> Self {
28        Self {
29            id: Uuid::new_v4(),
30            channel_id,
31            sender_id,
32            content,
33            timestamp: SystemTime::now(),
34            sender_nickname,
35        }
36    }
37}