freeswitch_types/sofia/
event_subclass.rs1wire_enum! {
4 #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11 pub enum SofiaEventSubclass {
12 Register => "sofia::register",
13 PreRegister => "sofia::pre_register",
14 RegisterAttempt => "sofia::register_attempt",
15 RegisterFailure => "sofia::register_failure",
16 Unregister => "sofia::unregister",
17 Expire => "sofia::expire",
18 GatewayState => "sofia::gateway_state",
19 SipUserState => "sofia::sip_user_state",
20 NotifyRefer => "sofia::notify_refer",
21 Reinvite => "sofia::reinvite",
22 GatewayAdd => "sofia::gateway_add",
23 GatewayDelete => "sofia::gateway_delete",
24 GatewayInvalidDigestReq => "sofia::gateway_invalid_digest_req",
25 RecoveryRecv => "sofia::recovery_recv",
26 RecoverySend => "sofia::recovery_send",
27 RecoveryRecovered => "sofia::recovery_recovered",
28 Error => "sofia::error",
29 ProfileStart => "sofia::profile_start",
30 NotifyWatchedHeader => "sofia::notify_watched_header",
31 WrongCallState => "sofia::wrong_call_state",
32 Transferor => "sofia::transferor",
33 Transferee => "sofia::transferee",
34 Replaced => "sofia::replaced",
35 Intercepted => "sofia::intercepted",
36 ByeResponse => "sofia::bye_response",
37 }
38 error ParseSofiaEventSubclassError("sofia event subclass");
39 tests: sofia_event_subclass_wire_tests;
40}
41
42impl SofiaEventSubclass {
43 pub const ALL: &[SofiaEventSubclass] = &[
45 Self::Register,
46 Self::PreRegister,
47 Self::RegisterAttempt,
48 Self::RegisterFailure,
49 Self::Unregister,
50 Self::Expire,
51 Self::GatewayState,
52 Self::SipUserState,
53 Self::NotifyRefer,
54 Self::Reinvite,
55 Self::GatewayAdd,
56 Self::GatewayDelete,
57 Self::GatewayInvalidDigestReq,
58 Self::RecoveryRecv,
59 Self::RecoverySend,
60 Self::RecoveryRecovered,
61 Self::Error,
62 Self::ProfileStart,
63 Self::NotifyWatchedHeader,
64 Self::WrongCallState,
65 Self::Transferor,
66 Self::Transferee,
67 Self::Replaced,
68 Self::Intercepted,
69 Self::ByeResponse,
70 ];
71
72 pub const REGISTRATION_EVENTS: &[SofiaEventSubclass] = &[
74 Self::Register,
75 Self::PreRegister,
76 Self::RegisterAttempt,
77 Self::RegisterFailure,
78 Self::Unregister,
79 Self::Expire,
80 ];
81
82 pub const GATEWAY_EVENTS: &[SofiaEventSubclass] = &[
84 Self::GatewayState,
85 Self::GatewayAdd,
86 Self::GatewayDelete,
87 Self::GatewayInvalidDigestReq,
88 ];
89}
90
91#[cfg(test)]
92mod tests {
93 use super::*;
94
95 #[test]
96 fn registration_events_subset() {
97 for &ev in SofiaEventSubclass::REGISTRATION_EVENTS {
98 assert!(SofiaEventSubclass::ALL.contains(&ev), "{ev} not in ALL");
99 }
100 }
101
102 #[test]
103 fn gateway_events_subset() {
104 for &ev in SofiaEventSubclass::GATEWAY_EVENTS {
105 assert!(SofiaEventSubclass::ALL.contains(&ev), "{ev} not in ALL");
106 }
107 }
108}