Skip to main content

webrtc_streaming_actix/
messages.rs

1use bytes::BytesMut;
2use retty::transport::TransportContext;
3use std::time::Instant;
4use sctp::ReliabilityType;
5
6#[derive(Debug, Copy, Clone, Eq, PartialEq)]
7pub(crate) enum DataChannelMessageType {
8    None,
9    Control,
10    Binary,
11    Text,
12}
13
14#[derive(Debug)]
15pub(crate) struct DataChannelMessageParams {
16    pub(crate) unordered: bool,
17    pub(crate) reliability_type: ReliabilityType,
18    pub(crate) reliability_parameter: u32,
19}
20
21#[derive(Debug, Clone, Eq, PartialEq)]
22pub(crate) enum DataChannelEvent {
23    Open,
24    Message(BytesMut),
25    Close,
26}
27
28#[derive(Debug)]
29pub struct DataChannelMessage {
30    pub(crate) association_handle: usize,
31    pub(crate) stream_id: u16,
32    pub(crate) data_message_type: DataChannelMessageType,
33    pub(crate) params: Option<DataChannelMessageParams>,
34    pub(crate) payload: BytesMut,
35}
36
37#[derive(Debug)]
38pub struct ApplicationMessage {
39    pub(crate) association_handle: usize,
40    pub(crate) stream_id: u16,
41    pub(crate) data_channel_event: DataChannelEvent,
42}
43
44#[derive(Debug)]
45pub enum STUNMessageEvent {
46    Raw(BytesMut),
47    Stun(stun::message::Message),
48}
49
50#[derive(Debug)]
51pub enum DTLSMessageEvent {
52    Raw(BytesMut),
53    Sctp(DataChannelMessage),
54    DataChannel(ApplicationMessage),
55}
56
57#[derive(Debug)]
58pub enum RTPMessageEvent {
59    Raw(BytesMut),
60    Rtp(rtp::packet::Packet),
61    Rtcp(Vec<Box<dyn rtcp::packet::Packet>>),
62}
63
64#[derive(Debug)]
65pub enum MessageEvent {
66    Stun(STUNMessageEvent),
67    Dtls(DTLSMessageEvent),
68    Rtp(RTPMessageEvent),
69}
70
71pub struct TaggedMessageEvent {
72    pub now: Instant,
73    pub transport: TransportContext,
74    pub message: MessageEvent,
75}