rust_rcs_client/conference/
subscription.rs1use std::ffi::CString;
16
17enum MultiConferenceEventInner {
18 UserJoin(String),
19 UserLeft(String),
20 ConferenceEnd,
21}
22
23pub struct MultiConferenceEvent {
24 inner: MultiConferenceEventInner,
25}
26
27impl MultiConferenceEvent {
28 pub fn conference_end() -> MultiConferenceEvent {
29 MultiConferenceEvent {
30 inner: MultiConferenceEventInner::ConferenceEnd,
31 }
32 }
33
34 pub fn get_event_type(&self) -> u16 {
35 match self.inner {
36 MultiConferenceEventInner::UserJoin(_) => 0,
37 MultiConferenceEventInner::UserLeft(_) => 1,
38 MultiConferenceEventInner::ConferenceEnd => 2,
39 }
40 }
41
42 pub fn get_user_joined(&self) -> Result<CString, ()> {
43 if let MultiConferenceEventInner::UserJoin(user) = &self.inner {
44 if let Ok(user) = CString::new(user.as_str()) {
45 return Ok(user);
46 }
47 }
48
49 Err(())
50 }
51
52 pub fn get_user_left(&self) -> Result<CString, ()> {
53 if let MultiConferenceEventInner::UserLeft(user) = &self.inner {
54 if let Ok(user) = CString::new(user.as_str()) {
55 return Ok(user);
56 }
57 }
58
59 Err(())
60 }
61}
62
63pub struct MultiConferenceSubscriber {}