hyperspeed_broadcast/signaling/
messages.rs1use mediasoup::rtp_parameters::{MediaKind, RtpCapabilities, RtpCapabilitiesFinalized, RtpParameters};
2use mediasoup::data_structures::{DtlsParameters, IceCandidate, IceParameters};
3use mediasoup::transport::TransportId;
4use mediasoup::consumer::ConsumerId;
5use mediasoup::producer::ProducerId;
6
7use serde::{Serialize, Deserialize};
8
9#[derive(Serialize, Deserialize)]
10#[serde(rename_all = "camelCase")]
11pub struct TransportOptions {
12    pub id: TransportId,
13    pub dtls_parameters: DtlsParameters,
14    pub ice_candidates: Vec<IceCandidate>,
15    pub ice_parameters: IceParameters,
16}
17
18#[derive(Serialize, Deserialize)]
19#[serde(tag = "type")]
20pub enum ServerboundMessage {
21    Begin {
22        channel_id: String
23    },
24    Init {
25        rtp_capabilities: RtpCapabilities
26    },
27    Connect {
28        dtls_parameters: DtlsParameters
29    },
30    Consume,
31    Resume {
32        id: ConsumerId
33    },
34    PollConnectedViewers,
35}
36
37#[derive(Serialize, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct Consume {
40    pub id: ConsumerId,
41    pub producer_id: ProducerId,
42    pub kind: MediaKind,
43    pub rtp_parameters: RtpParameters
44}
45
46#[derive(Serialize, Deserialize)]
47#[serde(tag = "type")]
48pub enum ClientboundMessage {
49    Init {
50        producers: Vec<ProducerId>,
51        transport: TransportOptions,
52        router_rtp_capabilities: RtpCapabilitiesFinalized
53    },
54    Connected,
55    #[serde(rename_all = "camelCase")]
56    Consuming {
57        consume: Vec<Consume>
58    },
59    ViewerCount {
60        count: usize
61    },
62}