gio/auto/
dbus_object_manager_server.rs1use crate::{ffi, DBusConnection, DBusObjectManager, DBusObjectSkeleton};
6use glib::{
7 prelude::*,
8 signal::{connect_raw, SignalHandlerId},
9 translate::*,
10};
11use std::boxed::Box as Box_;
12
13glib::wrapper! {
14 #[doc(alias = "GDBusObjectManagerServer")]
15 pub struct DBusObjectManagerServer(Object<ffi::GDBusObjectManagerServer, ffi::GDBusObjectManagerServerClass>) @implements DBusObjectManager;
16
17 match fn {
18 type_ => || ffi::g_dbus_object_manager_server_get_type(),
19 }
20}
21
22impl DBusObjectManagerServer {
23 pub const NONE: Option<&'static DBusObjectManagerServer> = None;
24
25 #[doc(alias = "g_dbus_object_manager_server_new")]
26 pub fn new(object_path: &str) -> DBusObjectManagerServer {
27 unsafe {
28 from_glib_full(ffi::g_dbus_object_manager_server_new(
29 object_path.to_glib_none().0,
30 ))
31 }
32 }
33}
34
35pub trait DBusObjectManagerServerExt: IsA<DBusObjectManagerServer> + 'static {
36 #[doc(alias = "g_dbus_object_manager_server_export")]
37 fn export(&self, object: &impl IsA<DBusObjectSkeleton>) {
38 unsafe {
39 ffi::g_dbus_object_manager_server_export(
40 self.as_ref().to_glib_none().0,
41 object.as_ref().to_glib_none().0,
42 );
43 }
44 }
45
46 #[doc(alias = "g_dbus_object_manager_server_export_uniquely")]
47 fn export_uniquely(&self, object: &impl IsA<DBusObjectSkeleton>) {
48 unsafe {
49 ffi::g_dbus_object_manager_server_export_uniquely(
50 self.as_ref().to_glib_none().0,
51 object.as_ref().to_glib_none().0,
52 );
53 }
54 }
55
56 #[doc(alias = "g_dbus_object_manager_server_get_connection")]
57 #[doc(alias = "get_connection")]
58 fn connection(&self) -> Option<DBusConnection> {
59 unsafe {
60 from_glib_full(ffi::g_dbus_object_manager_server_get_connection(
61 self.as_ref().to_glib_none().0,
62 ))
63 }
64 }
65
66 #[doc(alias = "g_dbus_object_manager_server_is_exported")]
67 fn is_exported(&self, object: &impl IsA<DBusObjectSkeleton>) -> bool {
68 unsafe {
69 from_glib(ffi::g_dbus_object_manager_server_is_exported(
70 self.as_ref().to_glib_none().0,
71 object.as_ref().to_glib_none().0,
72 ))
73 }
74 }
75
76 #[doc(alias = "g_dbus_object_manager_server_set_connection")]
77 #[doc(alias = "connection")]
78 fn set_connection(&self, connection: Option<&DBusConnection>) {
79 unsafe {
80 ffi::g_dbus_object_manager_server_set_connection(
81 self.as_ref().to_glib_none().0,
82 connection.to_glib_none().0,
83 );
84 }
85 }
86
87 #[doc(alias = "g_dbus_object_manager_server_unexport")]
88 fn unexport(&self, object_path: &str) -> bool {
89 unsafe {
90 from_glib(ffi::g_dbus_object_manager_server_unexport(
91 self.as_ref().to_glib_none().0,
92 object_path.to_glib_none().0,
93 ))
94 }
95 }
96
97 #[doc(alias = "connection")]
98 fn connect_connection_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
99 unsafe extern "C" fn notify_connection_trampoline<
100 P: IsA<DBusObjectManagerServer>,
101 F: Fn(&P) + 'static,
102 >(
103 this: *mut ffi::GDBusObjectManagerServer,
104 _param_spec: glib::ffi::gpointer,
105 f: glib::ffi::gpointer,
106 ) {
107 let f: &F = &*(f as *const F);
108 f(DBusObjectManagerServer::from_glib_borrow(this).unsafe_cast_ref())
109 }
110 unsafe {
111 let f: Box_<F> = Box_::new(f);
112 connect_raw(
113 self.as_ptr() as *mut _,
114 c"notify::connection".as_ptr() as *const _,
115 Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
116 notify_connection_trampoline::<Self, F> as *const (),
117 )),
118 Box_::into_raw(f),
119 )
120 }
121 }
122}
123
124impl<O: IsA<DBusObjectManagerServer>> DBusObjectManagerServerExt for O {}