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}