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 REGISTRATION_EVENTS: &[SofiaEventSubclass] = &[
45 Self::Register,
46 Self::PreRegister,
47 Self::RegisterAttempt,
48 Self::RegisterFailure,
49 Self::Unregister,
50 Self::Expire,
51 ];
52
53 pub const GATEWAY_EVENTS: &[SofiaEventSubclass] = &[
55 Self::GatewayState,
56 Self::GatewayAdd,
57 Self::GatewayDelete,
58 Self::GatewayInvalidDigestReq,
59 ];
60}
61
62#[cfg(test)]
63mod tests {
64 use super::*;
65
66 #[test]
67 fn registration_events_subset() {
68 for &ev in SofiaEventSubclass::REGISTRATION_EVENTS {
69 assert!(SofiaEventSubclass::ALL.contains(&ev), "{ev} not in ALL");
70 }
71 }
72
73 #[test]
74 fn gateway_events_subset() {
75 for &ev in SofiaEventSubclass::GATEWAY_EVENTS {
76 assert!(SofiaEventSubclass::ALL.contains(&ev), "{ev} not in ALL");
77 }
78 }
79}