#[allow(clippy::module_inception)] mod channel; pub use channel::*; mod messages; pub use messages::*; mod type_text; pub use type_text::*; use crate::telepathy; // FIXME: I'm assuming that all channels will be of type text and 1-1 for now. #[derive(Debug)] pub struct Channel { } // "This SHOULD NOT include the channel type and channel interface itself" pub fn channel_interfaces() -> Vec { vec![ "org.freedesktop.Telepathy.Channel.Interface.Messages".to_string(), ] } type Result = std::result::Result; impl Channel { fn build_tree(self) -> dbus::tree::Tree { let c_rc = std::rc::Rc::new(self); let f = dbus::tree::Factory::new_fn::<()>(); let mut tree = f.tree(()); let c_rc1 = c_rc.clone(); let chan_iface = telepathy::channel_server(&f, (), move |_| c_rc1.clone()); let c_rc2 = c_rc.clone(); let messages_iface = telepathy::channel_interface_messages_server(&f, (), move |_| c_rc2.clone()); let type_text_iface = telepathy::channel_type_text_server(&f, (), move |_| c_rc.clone()); tree = tree.add( f.object_path("", ()) .introspectable() .add(chan_iface) .add(messages_iface) .add(type_text_iface), ); tree = tree.add(f.object_path("/", ()).introspectable()); tree } }