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}