enigma_sfu/
types.rs

1use crate::ids::{ParticipantId, RoomId};
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5pub type PeerId = ParticipantId;
6
7#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
8#[derive(Clone, Debug, PartialEq, Eq, Hash)]
9pub struct RoomOptions {
10    pub name: Option<String>,
11    pub created_at_ms: u64,
12    pub metadata: Option<String>,
13}
14
15impl Default for RoomOptions {
16    fn default() -> Self {
17        Self {
18            name: None,
19            created_at_ms: 0,
20            metadata: None,
21        }
22    }
23}
24
25#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
26#[derive(Clone, Debug, PartialEq, Eq, Hash)]
27pub struct PeerInfo {
28    pub peer_id: PeerId,
29    pub joined_at_ms: u64,
30    pub user_id: Option<String>,
31    pub display: Option<String>,
32}
33
34#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
35#[derive(Clone, Debug, PartialEq, Eq, Hash)]
36pub struct CreateRoomRequest {
37    pub options: RoomOptions,
38}
39
40#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
41#[derive(Clone, Debug, PartialEq, Eq, Hash)]
42pub struct CreateRoomResponse {
43    pub room_id: RoomId,
44}
45
46#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
47#[derive(Clone, Debug, PartialEq, Eq, Hash)]
48pub struct JoinRequest {
49    pub room_id: RoomId,
50    pub peer: PeerInfo,
51    pub offer_sdp: String,
52}
53
54#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
55#[derive(Clone, Debug, PartialEq, Eq, Hash)]
56pub struct JoinResponse {
57    pub answer_sdp: String,
58    pub peer_id: PeerId,
59}
60
61#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
62#[derive(Clone, Debug, PartialEq, Eq, Hash)]
63pub struct TrickledIce {
64    pub room_id: RoomId,
65    pub peer_id: PeerId,
66    pub candidate: String,
67    pub sdp_mid: Option<String>,
68    pub sdp_mline_index: Option<u32>,
69}
70
71#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
72#[derive(Clone, Debug, PartialEq, Eq, Hash)]
73pub struct LeaveRequest {
74    pub room_id: RoomId,
75    pub peer_id: PeerId,
76}
77
78#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
79#[derive(Clone, Debug, PartialEq, Eq, Hash)]
80pub struct RoomSummary {
81    pub room_id: RoomId,
82    pub name: Option<String>,
83    pub peers: usize,
84    pub created_at_ms: u64,
85}
86
87#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
88#[derive(Clone, Debug, PartialEq, Eq, Hash)]
89pub struct ListRoomsResponse {
90    pub rooms: Vec<RoomSummary>,
91}