1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>GDBusConnection</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="GIO Reference Manual">
8 <link rel="up" href="gdbus-lowlevel.html" title="Lowlevel D-Bus Support">
9 <link rel="prev" href="GDBusMessage.html" title="GDBusMessage">
10 <link rel="next" href="GDBusMethodInvocation.html" title="GDBusMethodInvocation">
11 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
17 <td><a accesskey="p" href="GDBusMessage.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="gdbus-lowlevel.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">GIO Reference Manual</th>
21 <td><a accesskey="n" href="GDBusMethodInvocation.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#GDBusConnection.synopsis" class="shortcut">Top</a>
26 <a href="#GDBusConnection.description" class="shortcut">Description</a>
28 <a href="#GDBusConnection.object-hierarchy" class="shortcut">Object Hierarchy</a>
30 <a href="#GDBusConnection.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
32 <a href="#GDBusConnection.properties" class="shortcut">Properties</a>
34 <a href="#GDBusConnection.signals" class="shortcut">Signals</a>
37 <div class="refentry">
38 <a name="GDBusConnection"></a><div class="titlepage"></div>
39 <div class="refnamediv"><table width="100%"><tr>
41 <h2><span class="refentrytitle"><a name="GDBusConnection.top_of_page"></a>GDBusConnection</span></h2>
42 <p>GDBusConnection — D-Bus Connections</p>
44 <td valign="top" align="right"></td>
46 <div class="refsynopsisdiv">
47 <a name="GDBusConnection.synopsis"></a><h2>Synopsis</h2>
48 <pre class="synopsis">
49 #include <gio/gio.h>
51 enum <a class="link" href="GDBusConnection.html#GBusType" title="enum GBusType">GBusType</a>;
52 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-bus-get" title="g_bus_get ()">g_bus_get</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html#GBusType" title="enum GBusType"><span class="type">GBusType</span></a> bus_type</code></em>,
53 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
54 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
55 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
56 <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * <a class="link" href="GDBusConnection.html#g-bus-get-finish" title="g_bus_get_finish ()">g_bus_get_finish</a> (<em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
57 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
58 <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * <a class="link" href="GDBusConnection.html#g-bus-get-sync" title="g_bus_get_sync ()">g_bus_get_sync</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html#GBusType" title="enum GBusType"><span class="type">GBusType</span></a> bus_type</code></em>,
59 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
60 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
61 <a class="link" href="GDBusConnection.html#GDBusConnection-struct" title="GDBusConnection">GDBusConnection</a>;
62 enum <a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags">GDBusConnectionFlags</a>;
63 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-new" title="g_dbus_connection_new ()">g_dbus_connection_new</a> (<em class="parameter"><code><a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a> *stream</code></em>,
64 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *guid</code></em>,
65 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> flags</code></em>,
66 <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
67 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
68 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
69 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
70 <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-new-finish" title="g_dbus_connection_new_finish ()">g_dbus_connection_new_finish</a> (<em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
71 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
72 <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-new-sync" title="g_dbus_connection_new_sync ()">g_dbus_connection_new_sync</a> (<em class="parameter"><code><a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a> *stream</code></em>,
73 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *guid</code></em>,
74 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> flags</code></em>,
75 <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
76 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
77 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
78 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-new-for-address" title="g_dbus_connection_new_for_address ()">g_dbus_connection_new_for_address</a> (<em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *address</code></em>,
79 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> flags</code></em>,
80 <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
81 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
82 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
83 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
84 <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-new-for-address-finish" title="g_dbus_connection_new_for_address_finish ()">g_dbus_connection_new_for_address_finish</a>
85 (<em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
86 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
87 <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-new-for-address-sync" title="g_dbus_connection_new_for_address_sync ()">g_dbus_connection_new_for_address_sync</a>
88 (<em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *address</code></em>,
89 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> flags</code></em>,
90 <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
91 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
92 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
93 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-start-message-processing" title="g_dbus_connection_start_message_processing ()">g_dbus_connection_start_message_processing</a>
94 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);
95 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-close" title="g_dbus_connection_close ()">g_dbus_connection_close</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
96 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
97 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
98 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
99 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-close-finish" title="g_dbus_connection_close_finish ()">g_dbus_connection_close_finish</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
100 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
101 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
102 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-close-sync" title="g_dbus_connection_close_sync ()">g_dbus_connection_close_sync</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
103 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
104 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
105 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-is-closed" title="g_dbus_connection_is_closed ()">g_dbus_connection_is_closed</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);
106 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-flush" title="g_dbus_connection_flush ()">g_dbus_connection_flush</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
107 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
108 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
109 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
110 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-flush-finish" title="g_dbus_connection_flush_finish ()">g_dbus_connection_flush_finish</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
111 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
112 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
113 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-flush-sync" title="g_dbus_connection_flush_sync ()">g_dbus_connection_flush_sync</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
114 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
115 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
116 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-get-exit-on-close" title="g_dbus_connection_get_exit_on_close ()">g_dbus_connection_get_exit_on_close</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);
117 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-set-exit-on-close" title="g_dbus_connection_set_exit_on_close ()">g_dbus_connection_set_exit_on_close</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
118 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> exit_on_close</code></em>);
119 <a class="link" href="GIOStream.html" title="GIOStream"><span class="returnvalue">GIOStream</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-get-stream" title="g_dbus_connection_get_stream ()">g_dbus_connection_get_stream</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);
120 const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-get-guid" title="g_dbus_connection_get_guid ()">g_dbus_connection_get_guid</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);
121 const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-get-unique-name" title="g_dbus_connection_get_unique_name ()">g_dbus_connection_get_unique_name</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);
122 enum <a class="link" href="GDBusConnection.html#GDBusCapabilityFlags" title="enum GDBusCapabilityFlags">GDBusCapabilityFlags</a>;
123 <a class="link" href="GDBusConnection.html#GDBusCapabilityFlags" title="enum GDBusCapabilityFlags"><span class="returnvalue">GDBusCapabilityFlags</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-get-capabilities" title="g_dbus_connection_get_capabilities ()">g_dbus_connection_get_capabilities</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);
124 <a class="link" href="GCredentials.html" title="GCredentials"><span class="returnvalue">GCredentials</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-get-peer-credentials" title="g_dbus_connection_get_peer_credentials ()">g_dbus_connection_get_peer_credentials</a>
125 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);
126 enum <a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags">GDBusCallFlags</a>;
127 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-call" title="g_dbus_connection_call ()">g_dbus_connection_call</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
128 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *bus_name</code></em>,
129 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
130 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
131 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
132 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
133 <em class="parameter"><code>const <a href="./../glib/glib/glib-GVariantType.html#GVariantType"><span class="type">GVariantType</span></a> *reply_type</code></em>,
134 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> flags</code></em>,
135 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
136 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
137 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
138 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
139 <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-call-finish" title="g_dbus_connection_call_finish ()">g_dbus_connection_call_finish</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
140 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
141 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
142 <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-call-sync" title="g_dbus_connection_call_sync ()">g_dbus_connection_call_sync</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
143 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *bus_name</code></em>,
144 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
145 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
146 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
147 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
148 <em class="parameter"><code>const <a href="./../glib/glib/glib-GVariantType.html#GVariantType"><span class="type">GVariantType</span></a> *reply_type</code></em>,
149 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> flags</code></em>,
150 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
151 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
152 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
153 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-call-with-unix-fd-list" title="g_dbus_connection_call_with_unix_fd_list ()">g_dbus_connection_call_with_unix_fd_list</a>
154 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
155 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *bus_name</code></em>,
156 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
157 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
158 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
159 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
160 <em class="parameter"><code>const <a href="./../glib/glib/glib-GVariantType.html#GVariantType"><span class="type">GVariantType</span></a> *reply_type</code></em>,
161 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> flags</code></em>,
162 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
163 <em class="parameter"><code><a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> *fd_list</code></em>,
164 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
165 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
166 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
167 <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-call-with-unix-fd-list-finish" title="g_dbus_connection_call_with_unix_fd_list_finish ()">g_dbus_connection_call_with_unix_fd_list_finish</a>
168 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
169 <em class="parameter"><code><a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> **out_fd_list</code></em>,
170 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
171 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
172 <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-call-with-unix-fd-list-sync" title="g_dbus_connection_call_with_unix_fd_list_sync ()">g_dbus_connection_call_with_unix_fd_list_sync</a>
173 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
174 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *bus_name</code></em>,
175 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
176 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
177 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
178 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
179 <em class="parameter"><code>const <a href="./../glib/glib/glib-GVariantType.html#GVariantType"><span class="type">GVariantType</span></a> *reply_type</code></em>,
180 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> flags</code></em>,
181 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
182 <em class="parameter"><code><a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> *fd_list</code></em>,
183 <em class="parameter"><code><a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> **out_fd_list</code></em>,
184 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
185 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
186 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-emit-signal" title="g_dbus_connection_emit_signal ()">g_dbus_connection_emit_signal</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
187 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *destination_bus_name</code></em>,
188 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
189 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
190 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *signal_name</code></em>,
191 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
192 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
193 enum <a class="link" href="GDBusConnection.html#GDBusSignalFlags" title="enum GDBusSignalFlags">GDBusSignalFlags</a>;
194 <span class="returnvalue">void</span> (<a class="link" href="GDBusConnection.html#GDBusSignalCallback" title="GDBusSignalCallback ()">*GDBusSignalCallback</a>) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
195 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender_name</code></em>,
196 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
197 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
198 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *signal_name</code></em>,
199 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
200 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
201 <a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-signal-subscribe" title="g_dbus_connection_signal_subscribe ()">g_dbus_connection_signal_subscribe</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
202 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
203 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
204 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *member</code></em>,
205 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
206 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg0</code></em>,
207 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSignalFlags" title="enum GDBusSignalFlags"><span class="type">GDBusSignalFlags</span></a> flags</code></em>,
208 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSignalCallback" title="GDBusSignalCallback ()"><span class="type">GDBusSignalCallback</span></a> callback</code></em>,
209 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
210 <em class="parameter"><code><a href="./../glib/glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> user_data_free_func</code></em>);
211 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-signal-unsubscribe" title="g_dbus_connection_signal_unsubscribe ()">g_dbus_connection_signal_unsubscribe</a>
212 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
213 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> subscription_id</code></em>);
214 enum <a class="link" href="GDBusConnection.html#GDBusSendMessageFlags" title="enum GDBusSendMessageFlags">GDBusSendMessageFlags</a>;
215 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message" title="g_dbus_connection_send_message ()">g_dbus_connection_send_message</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
216 <em class="parameter"><code><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> *message</code></em>,
217 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSendMessageFlags" title="enum GDBusSendMessageFlags"><span class="type">GDBusSendMessageFlags</span></a> flags</code></em>,
218 <em class="parameter"><code>volatile <a href="./../glib/glib/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_serial</code></em>,
219 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
220 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply" title="g_dbus_connection_send_message_with_reply ()">g_dbus_connection_send_message_with_reply</a>
221 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
222 <em class="parameter"><code><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> *message</code></em>,
223 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSendMessageFlags" title="enum GDBusSendMessageFlags"><span class="type">GDBusSendMessageFlags</span></a> flags</code></em>,
224 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
225 <em class="parameter"><code>volatile <a href="./../glib/glib/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_serial</code></em>,
226 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
227 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
228 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
229 <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="returnvalue">GDBusMessage</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply-finish" title="g_dbus_connection_send_message_with_reply_finish ()">g_dbus_connection_send_message_with_reply_finish</a>
230 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
231 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
232 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
233 <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="returnvalue">GDBusMessage</span></a> * <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply-sync" title="g_dbus_connection_send_message_with_reply_sync ()">g_dbus_connection_send_message_with_reply_sync</a>
234 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
235 <em class="parameter"><code><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> *message</code></em>,
236 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSendMessageFlags" title="enum GDBusSendMessageFlags"><span class="type">GDBusSendMessageFlags</span></a> flags</code></em>,
237 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
238 <em class="parameter"><code>volatile <a href="./../glib/glib/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_serial</code></em>,
239 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
240 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
241 <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="returnvalue">GDBusMessage</span></a> * (<a class="link" href="GDBusConnection.html#GDBusMessageFilterFunction" title="GDBusMessageFilterFunction ()">*GDBusMessageFilterFunction</a>) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
242 <em class="parameter"><code><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> *message</code></em>,
243 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> incoming</code></em>,
244 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
245 <a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-add-filter" title="g_dbus_connection_add_filter ()">g_dbus_connection_add_filter</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
246 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusMessageFilterFunction" title="GDBusMessageFilterFunction ()"><span class="type">GDBusMessageFilterFunction</span></a> filter_function</code></em>,
247 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
248 <em class="parameter"><code><a href="./../glib/glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> user_data_free_func</code></em>);
249 <span class="returnvalue">void</span> <a class="link" href="GDBusConnection.html#g-dbus-connection-remove-filter" title="g_dbus_connection_remove_filter ()">g_dbus_connection_remove_filter</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
250 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> filter_id</code></em>);
251 <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable">GDBusInterfaceVTable</a>;
252 <span class="returnvalue">void</span> (<a class="link" href="GDBusConnection.html#GDBusInterfaceMethodCallFunc" title="GDBusInterfaceMethodCallFunc ()">*GDBusInterfaceMethodCallFunc</a>) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
253 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
254 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
255 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
256 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
257 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
258 <em class="parameter"><code><a class="link" href="GDBusMethodInvocation.html" title="GDBusMethodInvocation"><span class="type">GDBusMethodInvocation</span></a> *invocation</code></em>,
259 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
260 <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * (<a class="link" href="GDBusConnection.html#GDBusInterfaceGetPropertyFunc" title="GDBusInterfaceGetPropertyFunc ()">*GDBusInterfaceGetPropertyFunc</a>) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
261 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
262 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
263 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
264 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
265 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>,
266 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
267 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> (<a class="link" href="GDBusConnection.html#GDBusInterfaceSetPropertyFunc" title="GDBusInterfaceSetPropertyFunc ()">*GDBusInterfaceSetPropertyFunc</a>) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
268 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
269 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
270 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
271 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
272 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *value</code></em>,
273 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>,
274 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
275 <a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-register-object" title="g_dbus_connection_register_object ()">g_dbus_connection_register_object</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
276 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
277 <em class="parameter"><code><a class="link" href="gio-D-Bus-Introspection-Data.html#GDBusInterfaceInfo"><span class="type">GDBusInterfaceInfo</span></a> *interface_info</code></em>,
278 <em class="parameter"><code>const <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a> *vtable</code></em>,
279 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
280 <em class="parameter"><code><a href="./../glib/glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> user_data_free_func</code></em>,
281 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
282 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-unregister-object" title="g_dbus_connection_unregister_object ()">g_dbus_connection_unregister_object</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
283 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> registration_id</code></em>);
284 <a class="link" href="GDBusConnection.html#GDBusSubtreeVTable" title="GDBusSubtreeVTable">GDBusSubtreeVTable</a>;
285 <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> ** (<a class="link" href="GDBusConnection.html#GDBusSubtreeEnumerateFunc" title="GDBusSubtreeEnumerateFunc ()">*GDBusSubtreeEnumerateFunc</a>) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
286 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
287 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
288 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
289 <a class="link" href="gio-D-Bus-Introspection-Data.html#GDBusInterfaceInfo"><span class="returnvalue">GDBusInterfaceInfo</span></a> ** (<a class="link" href="GDBusConnection.html#GDBusSubtreeIntrospectFunc" title="GDBusSubtreeIntrospectFunc ()">*GDBusSubtreeIntrospectFunc</a>) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
290 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
291 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
292 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *node</code></em>,
293 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
294 const <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="returnvalue">GDBusInterfaceVTable</span></a> * (<a class="link" href="GDBusConnection.html#GDBusSubtreeDispatchFunc" title="GDBusSubtreeDispatchFunc ()">*GDBusSubtreeDispatchFunc</a>)
295 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
296 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
297 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
298 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
299 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *node</code></em>,
300 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> *out_user_data</code></em>,
301 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
302 enum <a class="link" href="GDBusConnection.html#GDBusSubtreeFlags" title="enum GDBusSubtreeFlags">GDBusSubtreeFlags</a>;
303 <a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()">g_dbus_connection_register_subtree</a> (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
304 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
305 <em class="parameter"><code>const <a class="link" href="GDBusConnection.html#GDBusSubtreeVTable" title="GDBusSubtreeVTable"><span class="type">GDBusSubtreeVTable</span></a> *vtable</code></em>,
306 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSubtreeFlags" title="enum GDBusSubtreeFlags"><span class="type">GDBusSubtreeFlags</span></a> flags</code></em>,
307 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
308 <em class="parameter"><code><a href="./../glib/glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> user_data_free_func</code></em>,
309 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
310 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="GDBusConnection.html#g-dbus-connection-unregister-subtree" title="g_dbus_connection_unregister_subtree ()">g_dbus_connection_unregister_subtree</a>
311 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
312 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> registration_id</code></em>);
315 <div class="refsect1">
316 <a name="GDBusConnection.object-hierarchy"></a><h2>Object Hierarchy</h2>
317 <pre class="synopsis">
318 <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#GObject">GObject</a>
322 <div class="refsect1">
323 <a name="GDBusConnection.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
325 GDBusConnection implements
326 <a class="link" href="GInitable.html" title="GInitable">GInitable</a> and <a class="link" href="GAsyncInitable.html" title="GAsyncInitable">GAsyncInitable</a>.</p>
328 <div class="refsect1">
329 <a name="GDBusConnection.properties"></a><h2>Properties</h2>
330 <pre class="synopsis">
331 "<a class="link" href="GDBusConnection.html#GDBusConnection--address" title='The "address" property'>address</a>" <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Write / Construct Only
332 "<a class="link" href="GDBusConnection.html#GDBusConnection--authentication-observer" title='The "authentication-observer" property'>authentication-observer</a>" <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a>* : Write / Construct Only
333 "<a class="link" href="GDBusConnection.html#GDBusConnection--capabilities" title='The "capabilities" property'>capabilities</a>" <a class="link" href="GDBusConnection.html#GDBusCapabilityFlags" title="enum GDBusCapabilityFlags"><span class="type">GDBusCapabilityFlags</span></a> : Read
334 "<a class="link" href="GDBusConnection.html#GDBusConnection--closed" title='The "closed" property'>closed</a>" <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read
335 "<a class="link" href="GDBusConnection.html#GDBusConnection--exit-on-close" title='The "exit-on-close" property'>exit-on-close</a>" <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write
336 "<a class="link" href="GDBusConnection.html#GDBusConnection--flags" title='The "flags" property'>flags</a>" <a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> : Write / Construct Only
337 "<a class="link" href="GDBusConnection.html#GDBusConnection--guid" title='The "guid" property'>guid</a>" <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write / Construct Only
338 "<a class="link" href="GDBusConnection.html#GDBusConnection--stream" title='The "stream" property'>stream</a>" <a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a>* : Read / Write / Construct Only
339 "<a class="link" href="GDBusConnection.html#GDBusConnection--unique-name" title='The "unique-name" property'>unique-name</a>" <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read
342 <div class="refsect1">
343 <a name="GDBusConnection.signals"></a><h2>Signals</h2>
344 <pre class="synopsis">
345 "<a class="link" href="GDBusConnection.html#GDBusConnection-closed" title='The "closed" signal'>closed</a>" : <a href="./../gobject/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
348 <div class="refsect1">
349 <a name="GDBusConnection.description"></a><h2>Description</h2>
351 The <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> type is used for D-Bus connections to remote
352 peers such as a message buses. It is a low-level API that offers a
353 lot of flexibility. For instance, it lets you establish a connection
354 over any transport that can by represented as an <a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a>.
357 This class is rarely used directly in D-Bus clients. If you are writing
358 an D-Bus client, it is often easier to use the <a class="link" href="gio-Owning-Bus-Names.html#g-bus-own-name" title="g_bus_own_name ()"><code class="function">g_bus_own_name()</code></a>,
359 <a class="link" href="gio-Watching-Bus-Names.html#g-bus-watch-name" title="g_bus_watch_name ()"><code class="function">g_bus_watch_name()</code></a> or <a class="link" href="GDBusProxy.html#g-dbus-proxy-new-for-bus" title="g_dbus_proxy_new_for_bus ()"><code class="function">g_dbus_proxy_new_for_bus()</code></a> APIs.
362 As an exception to the usual GLib rule that a particular object must not be
363 used by two threads at the same time, <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>'s methods may be
364 called from any thread<sup>[<a name="id926780" href="#ftn.id926780" class="footnote">1</a>]</sup>.
367 Most of the ways to obtain a <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> automatically initialize it
368 (i.e. connect to D-Bus): for instance, <a class="link" href="GDBusConnection.html#g-dbus-connection-new" title="g_dbus_connection_new ()"><code class="function">g_dbus_connection_new()</code></a> and
369 <a class="link" href="GDBusConnection.html#g-bus-get" title="g_bus_get ()"><code class="function">g_bus_get()</code></a>, and the synchronous versions of those methods, give you an
370 initialized connection. Language bindings for GIO should use
371 <a class="link" href="GInitable.html#g-initable-new" title="g_initable_new ()"><code class="function">g_initable_new()</code></a> or <a class="link" href="GAsyncInitable.html#g-async-initable-new-async" title="g_async_initable_new_async ()"><code class="function">g_async_initable_new_async()</code></a>, which also initialize the
375 If you construct an uninitialized <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>, such as via
376 <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-new"><code class="function">g_object_new()</code></a>, you must initialize it via <a class="link" href="GInitable.html#g-initable-init" title="g_initable_init ()"><code class="function">g_initable_init()</code></a> or
377 <a class="link" href="GAsyncInitable.html#g-async-initable-init-async" title="g_async_initable_init_async ()"><code class="function">g_async_initable_init_async()</code></a> before using its methods or properties.
378 Calling methods or accessing properties on a <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> that has not
379 completed initialization successfully is considered to be invalid, and leads
380 to undefined behaviour. In particular, if initialization fails with a
381 <a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, the only valid thing you can do with that <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> is to
382 free it with <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.
386 <div class="example">
387 <a name="gdbus-server"></a><p class="title"><b>Example 2. D-Bus server example</b></p>
388 <div class="example-contents">
389 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
392 <td class="listing_lines" align="right"><pre>1
784 <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string"><gio/gio.h></span>
785 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><stdlib.h></span>
787 <span class="preproc">#ifdef</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#G-OS-UNIX:CAPS">G_OS_UNIX</a></span>
788 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><gio/gunixfdlist.h></span>
789 <span class="comment">/* For STDOUT_FILENO */</span>
790 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><unistd.h></span>
791 <span class="preproc">#endif</span>
793 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
795 <span class="keyword">static</span><span class="normal"> </span><span class="usertype">GDBusNodeInfo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">introspection_data </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
797 <span class="comment">/* Introspection data for the service we are exporting */</span>
798 <span class="keyword">static</span><span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> introspection_xml</span><span class="symbol">[]</span><span class="normal"> </span><span class="symbol">=</span>
799 <span class="normal"> </span><span class="string">"<node>"</span>
800 <span class="normal"> </span><span class="string">" <interface name='org.gtk.GDBus.TestInterface'>"</span>
801 <span class="normal"> </span><span class="string">" <annotation name='org.gtk.GDBus.Annotation' value='OnInterface'/>"</span>
802 <span class="normal"> </span><span class="string">" <annotation name='org.gtk.GDBus.Annotation' value='AlsoOnInterface'/>"</span>
803 <span class="normal"> </span><span class="string">" <method name='HelloWorld'>"</span>
804 <span class="normal"> </span><span class="string">" <annotation name='org.gtk.GDBus.Annotation' value='OnMethod'/>"</span>
805 <span class="normal"> </span><span class="string">" <arg type='s' name='greeting' direction='in'/>"</span>
806 <span class="normal"> </span><span class="string">" <arg type='s' name='response' direction='out'/>"</span>
807 <span class="normal"> </span><span class="string">" </method>"</span>
808 <span class="normal"> </span><span class="string">" <method name='EmitSignal'>"</span>
809 <span class="normal"> </span><span class="string">" <arg type='d' name='speed_in_mph' direction='in'>"</span>
810 <span class="normal"> </span><span class="string">" <annotation name='org.gtk.GDBus.Annotation' value='OnArg'/>"</span>
811 <span class="normal"> </span><span class="string">" </arg>"</span>
812 <span class="normal"> </span><span class="string">" </method>"</span>
813 <span class="normal"> </span><span class="string">" <method name='GimmeStdout'/>"</span>
814 <span class="normal"> </span><span class="string">" <signal name='VelocityChanged'>"</span>
815 <span class="normal"> </span><span class="string">" <annotation name='org.gtk.GDBus.Annotation' value='Onsignal'/>"</span>
816 <span class="normal"> </span><span class="string">" <arg type='d' name='speed_in_mph'/>"</span>
817 <span class="normal"> </span><span class="string">" <arg type='s' name='speed_as_string'>"</span>
818 <span class="normal"> </span><span class="string">" <annotation name='org.gtk.GDBus.Annotation' value='OnArg_NonFirst'/>"</span>
819 <span class="normal"> </span><span class="string">" </arg>"</span>
820 <span class="normal"> </span><span class="string">" </signal>"</span>
821 <span class="normal"> </span><span class="string">" <property type='s' name='FluxCapicitorName' access='read'>"</span>
822 <span class="normal"> </span><span class="string">" <annotation name='org.gtk.GDBus.Annotation' value='OnProperty'>"</span>
823 <span class="normal"> </span><span class="string">" <annotation name='org.gtk.GDBus.Annotation' value='OnAnnotation_YesThisIsCrazy'/>"</span>
824 <span class="normal"> </span><span class="string">" </annotation>"</span>
825 <span class="normal"> </span><span class="string">" </property>"</span>
826 <span class="normal"> </span><span class="string">" <property type='s' name='Title' access='readwrite'/>"</span>
827 <span class="normal"> </span><span class="string">" <property type='s' name='ReadingAlwaysThrowsError' access='read'/>"</span>
828 <span class="normal"> </span><span class="string">" <property type='s' name='WritingAlwaysThrowsError' access='readwrite'/>"</span>
829 <span class="normal"> </span><span class="string">" <property type='s' name='OnlyWritable' access='write'/>"</span>
830 <span class="normal"> </span><span class="string">" <property type='s' name='Foo' access='read'/>"</span>
831 <span class="normal"> </span><span class="string">" <property type='s' name='Bar' access='read'/>"</span>
832 <span class="normal"> </span><span class="string">" </interface>"</span>
833 <span class="normal"> </span><span class="string">"</node>"</span><span class="symbol">;</span>
835 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
837 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
838 <span class="function">handle_method_call</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
839 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
840 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
841 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
842 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">method_name</span><span class="symbol">,</span>
843 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">parameters</span><span class="symbol">,</span>
844 <span class="normal"> </span><span class="usertype">GDBusMethodInvocation</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">invocation</span><span class="symbol">,</span>
845 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
846 <span class="cbracket">{</span>
847 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"HelloWorld"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
848 <span class="normal"> </span><span class="cbracket">{</span>
849 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">greeting</span><span class="symbol">;</span>
851 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parameters</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(&s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">greeting</span><span class="symbol">);</span>
853 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">greeting</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Return Unregistered"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
854 <span class="normal"> </span><span class="cbracket">{</span>
855 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-error">g_dbus_method_invocation_return_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
856 <span class="normal"> <a href="gio-GIOError.html#G-IO-ERROR:CAPS">G_IO_ERROR</a></span><span class="symbol">,</span>
857 <span class="normal"> <a href="gio-GIOError.html#G-IO-ERROR-FAILED-HANDLED:CAPS">G_IO_ERROR_FAILED_HANDLED</a></span><span class="symbol">,</span>
858 <span class="normal"> </span><span class="string">"As requested, here's a GError not registered (G_IO_ERROR_FAILED_HANDLED)"</span><span class="symbol">);</span>
859 <span class="normal"> </span><span class="cbracket">}</span>
860 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">greeting</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Return Registered"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
861 <span class="normal"> </span><span class="cbracket">{</span>
862 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-error">g_dbus_method_invocation_return_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
863 <span class="normal"> <a href="gio-GDBusError.html#G-DBUS-ERROR:CAPS">G_DBUS_ERROR</a></span><span class="symbol">,</span>
864 <span class="normal"> <a href="gio-GDBusError.html#G-DBUS-ERROR-MATCH-RULE-NOT-FOUND:CAPS">G_DBUS_ERROR_MATCH_RULE_NOT_FOUND</a></span><span class="symbol">,</span>
865 <span class="normal"> </span><span class="string">"As requested, here's a GError that is registered (G_DBUS_ERROR_MATCH_RULE_NOT_FOUND)"</span><span class="symbol">);</span>
866 <span class="normal"> </span><span class="cbracket">}</span>
867 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">greeting</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Return Raw"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
868 <span class="normal"> </span><span class="cbracket">{</span>
869 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-dbus-error">g_dbus_method_invocation_return_dbus_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
870 <span class="normal"> </span><span class="string">"org.gtk.GDBus.SomeErrorName"</span><span class="symbol">,</span>
871 <span class="normal"> </span><span class="string">"As requested, here's a raw D-Bus error"</span><span class="symbol">);</span>
872 <span class="normal"> </span><span class="cbracket">}</span>
873 <span class="normal"> </span><span class="keyword">else</span>
874 <span class="normal"> </span><span class="cbracket">{</span>
875 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">response</span><span class="symbol">;</span>
876 <span class="normal"> response </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup-printf">g_strdup_printf</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"You greeted me with '%s'. Thanks!"</span><span class="symbol">,</span><span class="normal"> greeting</span><span class="symbol">);</span>
877 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-value">g_dbus_method_invocation_return_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
878 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(s)"</span><span class="symbol">,</span><span class="normal"> response</span><span class="symbol">));</span>
879 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">response</span><span class="symbol">);</span>
880 <span class="normal"> </span><span class="cbracket">}</span>
881 <span class="normal"> </span><span class="cbracket">}</span>
882 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"EmitSignal"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
883 <span class="normal"> </span><span class="cbracket">{</span>
884 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">local_error</span><span class="symbol">;</span>
885 <span class="normal"> </span><span class="usertype">gdouble</span><span class="normal"> speed_in_mph</span><span class="symbol">;</span>
886 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">speed_as_string</span><span class="symbol">;</span>
888 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parameters</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(d)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">speed_in_mph</span><span class="symbol">);</span>
889 <span class="normal"> speed_as_string </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup-printf">g_strdup_printf</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"%g mph!"</span><span class="symbol">,</span><span class="normal"> speed_in_mph</span><span class="symbol">);</span>
891 <span class="normal"> local_error </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
892 <span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-emit-signal">g_dbus_connection_emit_signal</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
893 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
894 <span class="normal"> object_path</span><span class="symbol">,</span>
895 <span class="normal"> interface_name</span><span class="symbol">,</span>
896 <span class="normal"> </span><span class="string">"VelocityChanged"</span><span class="symbol">,</span>
897 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(ds)"</span><span class="symbol">,</span>
898 <span class="normal"> speed_in_mph</span><span class="symbol">,</span>
899 <span class="normal"> speed_as_string</span><span class="symbol">),</span>
900 <span class="normal"> </span><span class="symbol">&</span><span class="normal">local_error</span><span class="symbol">);</span>
901 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-no-error">g_assert_no_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">local_error</span><span class="symbol">);</span>
902 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">speed_as_string</span><span class="symbol">);</span>
904 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-value">g_dbus_method_invocation_return_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
905 <span class="normal"> </span><span class="cbracket">}</span>
906 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"GimmeStdout"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
907 <span class="normal"> </span><span class="cbracket">{</span>
908 <span class="preproc">#ifdef</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#G-OS-UNIX:CAPS">G_OS_UNIX</a></span>
909 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-get-capabilities">g_dbus_connection_get_capabilities</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">&</span><span class="normal"> <a href="GDBusConnection.html#G-DBUS-CAPABILITY-FLAGS-UNIX-FD-PASSING:CAPS">G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING</a></span><span class="symbol">)</span>
910 <span class="normal"> </span><span class="cbracket">{</span>
911 <span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">reply</span><span class="symbol">;</span>
912 <span class="normal"> </span><span class="usertype">GUnixFDList</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">fd_list</span><span class="symbol">;</span>
913 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error</span><span class="symbol">;</span>
915 <span class="normal"> fd_list </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GUnixFDList.html#g-unix-fd-list-new">g_unix_fd_list_new</a></span><span class="normal"> </span><span class="symbol">();</span>
916 <span class="normal"> error </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
917 <span class="normal"> </span><span class="function"><a href="GUnixFDList.html#g-unix-fd-list-append">g_unix_fd_list_append</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">fd_list</span><span class="symbol">,</span><span class="normal"> STDOUT_FILENO</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">error</span><span class="symbol">);</span>
918 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-no-error">g_assert_no_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
920 <span class="normal"> reply </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusMessage.html#g-dbus-message-new-method-reply">g_dbus_message_new_method_reply</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-get-message">g_dbus_method_invocation_get_message</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">));</span>
921 <span class="normal"> </span><span class="function"><a href="GDBusMessage.html#g-dbus-message-set-unix-fd-list">g_dbus_message_set_unix_fd_list</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reply</span><span class="symbol">,</span><span class="normal"> fd_list</span><span class="symbol">);</span>
923 <span class="normal"> error </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
924 <span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-send-message">g_dbus_connection_send_message</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
925 <span class="normal"> reply</span><span class="symbol">,</span>
926 <span class="normal"> <a href="GDBusConnection.html#G-DBUS-SEND-MESSAGE-FLAGS-NONE:CAPS">G_DBUS_SEND_MESSAGE_FLAGS_NONE</a></span><span class="symbol">,</span>
927 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* out_serial */</span>
928 <span class="normal"> </span><span class="symbol">&</span><span class="normal">error</span><span class="symbol">);</span>
929 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-no-error">g_assert_no_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
931 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">);</span>
932 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">fd_list</span><span class="symbol">);</span>
933 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">reply</span><span class="symbol">);</span>
934 <span class="normal"> </span><span class="cbracket">}</span>
935 <span class="normal"> </span><span class="keyword">else</span>
936 <span class="normal"> </span><span class="cbracket">{</span>
937 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-dbus-error">g_dbus_method_invocation_return_dbus_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
938 <span class="normal"> </span><span class="string">"org.gtk.GDBus.Failed"</span><span class="symbol">,</span>
939 <span class="normal"> </span><span class="string">"Your message bus daemon does not support file descriptor passing (need D-Bus >= 1.3.0)"</span><span class="symbol">);</span>
940 <span class="normal"> </span><span class="cbracket">}</span>
941 <span class="preproc">#else</span>
942 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-dbus-error">g_dbus_method_invocation_return_dbus_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
943 <span class="normal"> </span><span class="string">"org.gtk.GDBus.NotOnUnix"</span><span class="symbol">,</span>
944 <span class="normal"> </span><span class="string">"Your OS does not support file descriptor passing"</span><span class="symbol">);</span>
945 <span class="preproc">#endif</span>
946 <span class="normal"> </span><span class="cbracket">}</span>
947 <span class="cbracket">}</span>
949 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gchar">gchar</a> </span><span class="symbol">*</span><span class="normal">_global_title </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
951 <span class="keyword">static</span><span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> swap_a_and_b </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS">FALSE</a></span><span class="symbol">;</span>
953 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-GVariant.html#GVariant">GVariant</a> </span><span class="symbol">*</span>
954 <span class="function">handle_get_property</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
955 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
956 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
957 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
958 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">property_name</span><span class="symbol">,</span>
959 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">**</span><span class="normal">error</span><span class="symbol">,</span>
960 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
961 <span class="cbracket">{</span>
962 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">ret</span><span class="symbol">;</span>
964 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
965 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"FluxCapicitorName"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
966 <span class="normal"> </span><span class="cbracket">{</span>
967 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"DeLorean"</span><span class="symbol">);</span>
968 <span class="normal"> </span><span class="cbracket">}</span>
969 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Title"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
970 <span class="normal"> </span><span class="cbracket">{</span>
971 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">_global_title </span><span class="symbol">==</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span>
972 <span class="normal"> _global_title </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Back To C!"</span><span class="symbol">);</span>
973 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">_global_title</span><span class="symbol">);</span>
974 <span class="normal"> </span><span class="cbracket">}</span>
975 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"ReadingAlwaysThrowsError"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
976 <span class="normal"> </span><span class="cbracket">{</span>
977 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Error-Reporting.html#g-set-error">g_set_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">,</span>
978 <span class="normal"> <a href="gio-GIOError.html#G-IO-ERROR:CAPS">G_IO_ERROR</a></span><span class="symbol">,</span>
979 <span class="normal"> <a href="gio-GIOError.html#G-IO-ERROR-FAILED:CAPS">G_IO_ERROR_FAILED</a></span><span class="symbol">,</span>
980 <span class="normal"> </span><span class="string">"Hello %s. I thought I said reading this property "</span>
981 <span class="normal"> </span><span class="string">"always results in an error. kthxbye"</span><span class="symbol">,</span>
982 <span class="normal"> sender</span><span class="symbol">);</span>
983 <span class="normal"> </span><span class="cbracket">}</span>
984 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"WritingAlwaysThrowsError"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
985 <span class="normal"> </span><span class="cbracket">{</span>
986 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"There's no home like home"</span><span class="symbol">);</span>
987 <span class="normal"> </span><span class="cbracket">}</span>
988 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Foo"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
989 <span class="normal"> </span><span class="cbracket">{</span>
990 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">swap_a_and_b </span><span class="symbol">?</span><span class="normal"> </span><span class="string">"Tock"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"Tick"</span><span class="symbol">);</span>
991 <span class="normal"> </span><span class="cbracket">}</span>
992 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Bar"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
993 <span class="normal"> </span><span class="cbracket">{</span>
994 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">swap_a_and_b </span><span class="symbol">?</span><span class="normal"> </span><span class="string">"Tick"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"Tock"</span><span class="symbol">);</span>
995 <span class="normal"> </span><span class="cbracket">}</span>
997 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> ret</span><span class="symbol">;</span>
998 <span class="cbracket">}</span>
1000 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gboolean">gboolean</a></span>
1001 <span class="function">handle_set_property</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1002 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1003 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1004 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
1005 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">property_name</span><span class="symbol">,</span>
1006 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value</span><span class="symbol">,</span>
1007 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">**</span><span class="normal">error</span><span class="symbol">,</span>
1008 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1009 <span class="cbracket">{</span>
1010 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Title"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1011 <span class="normal"> </span><span class="cbracket">{</span>
1012 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">_global_title</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get-string">g_variant_get_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">))</span><span class="normal"> </span><span class="symbol">!=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1013 <span class="normal"> </span><span class="cbracket">{</span>
1014 <span class="normal"> </span><span class="usertype">GVariantBuilder</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">builder</span><span class="symbol">;</span>
1015 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">local_error</span><span class="symbol">;</span>
1017 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">_global_title</span><span class="symbol">);</span>
1018 <span class="normal"> _global_title </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-dup-string">g_variant_dup_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1020 <span class="normal"> local_error </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
1021 <span class="normal"> builder </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-new">g_variant_builder_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS">G_VARIANT_TYPE_ARRAY</a></span><span class="symbol">);</span>
1022 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span>
1023 <span class="normal"> </span><span class="string">"{sv}"</span><span class="symbol">,</span>
1024 <span class="normal"> </span><span class="string">"Title"</span><span class="symbol">,</span>
1025 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">_global_title</span><span class="symbol">));</span>
1026 <span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-emit-signal">g_dbus_connection_emit_signal</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
1027 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
1028 <span class="normal"> object_path</span><span class="symbol">,</span>
1029 <span class="normal"> </span><span class="string">"org.freedesktop.DBus.Properties"</span><span class="symbol">,</span>
1030 <span class="normal"> </span><span class="string">"PropertiesChanged"</span><span class="symbol">,</span>
1031 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(sa{sv}as)"</span><span class="symbol">,</span>
1032 <span class="normal"> interface_name</span><span class="symbol">,</span>
1033 <span class="normal"> builder</span><span class="symbol">,</span>
1034 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">),</span>
1035 <span class="normal"> </span><span class="symbol">&</span><span class="normal">local_error</span><span class="symbol">);</span>
1036 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-no-error">g_assert_no_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">local_error</span><span class="symbol">);</span>
1037 <span class="normal"> </span><span class="cbracket">}</span>
1038 <span class="normal"> </span><span class="cbracket">}</span>
1039 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"ReadingAlwaysThrowsError"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1040 <span class="normal"> </span><span class="cbracket">{</span>
1041 <span class="normal"> </span><span class="comment">/* do nothing - they can't read it after all! */</span>
1042 <span class="normal"> </span><span class="cbracket">}</span>
1043 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"WritingAlwaysThrowsError"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1044 <span class="normal"> </span><span class="cbracket">{</span>
1045 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Error-Reporting.html#g-set-error">g_set_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">,</span>
1046 <span class="normal"> <a href="gio-GIOError.html#G-IO-ERROR:CAPS">G_IO_ERROR</a></span><span class="symbol">,</span>
1047 <span class="normal"> <a href="gio-GIOError.html#G-IO-ERROR-FAILED:CAPS">G_IO_ERROR_FAILED</a></span><span class="symbol">,</span>
1048 <span class="normal"> </span><span class="string">"Hello AGAIN %s. I thought I said writing this property "</span>
1049 <span class="normal"> </span><span class="string">"always results in an error. kthxbye"</span><span class="symbol">,</span>
1050 <span class="normal"> sender</span><span class="symbol">);</span>
1051 <span class="normal"> </span><span class="cbracket">}</span>
1053 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error </span><span class="symbol">==</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
1054 <span class="cbracket">}</span>
1057 <span class="comment">/* for now */</span>
1058 <span class="keyword">static</span><span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">GDBusInterfaceVTable</span><span class="normal"> interface_vtable </span><span class="symbol">=</span>
1059 <span class="cbracket">{</span>
1060 <span class="normal"> handle_method_call</span><span class="symbol">,</span>
1061 <span class="normal"> handle_get_property</span><span class="symbol">,</span>
1062 <span class="normal"> handle_set_property</span>
1063 <span class="cbracket">}</span><span class="symbol">;</span>
1065 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1067 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gboolean">gboolean</a></span>
1068 <span class="function">on_timeout_cb</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1069 <span class="cbracket">{</span>
1070 <span class="normal"> </span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection </span><span class="symbol">=</span><span class="normal"> </span><span class="function">G_DBUS_CONNECTION</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">user_data</span><span class="symbol">);</span>
1071 <span class="normal"> </span><span class="usertype">GVariantBuilder</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">builder</span><span class="symbol">;</span>
1072 <span class="normal"> </span><span class="usertype">GVariantBuilder</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">invalidated_builder</span><span class="symbol">;</span>
1073 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error</span><span class="symbol">;</span>
1075 <span class="normal"> swap_a_and_b </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">!</span><span class="normal">swap_a_and_b</span><span class="symbol">;</span>
1077 <span class="normal"> error </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
1078 <span class="normal"> builder </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-new">g_variant_builder_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS">G_VARIANT_TYPE_ARRAY</a></span><span class="symbol">);</span>
1079 <span class="normal"> invalidated_builder </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-new">g_variant_builder_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-GVariantType.html#G-VARIANT-TYPE:CAPS">G_VARIANT_TYPE</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"as"</span><span class="symbol">));</span>
1080 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span>
1081 <span class="normal"> </span><span class="string">"{sv}"</span><span class="symbol">,</span>
1082 <span class="normal"> </span><span class="string">"Foo"</span><span class="symbol">,</span>
1083 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">swap_a_and_b </span><span class="symbol">?</span><span class="normal"> </span><span class="string">"Tock"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"Tick"</span><span class="symbol">));</span>
1084 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span>
1085 <span class="normal"> </span><span class="string">"{sv}"</span><span class="symbol">,</span>
1086 <span class="normal"> </span><span class="string">"Bar"</span><span class="symbol">,</span>
1087 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">swap_a_and_b </span><span class="symbol">?</span><span class="normal"> </span><span class="string">"Tick"</span><span class="normal"> </span><span class="symbol">:</span><span class="normal"> </span><span class="string">"Tock"</span><span class="symbol">));</span>
1088 <span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-emit-signal">g_dbus_connection_emit_signal</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
1089 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
1090 <span class="normal"> </span><span class="string">"/org/gtk/GDBus/TestObject"</span><span class="symbol">,</span>
1091 <span class="normal"> </span><span class="string">"org.freedesktop.DBus.Properties"</span><span class="symbol">,</span>
1092 <span class="normal"> </span><span class="string">"PropertiesChanged"</span><span class="symbol">,</span>
1093 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(sa{sv}as)"</span><span class="symbol">,</span>
1094 <span class="normal"> </span><span class="string">"org.gtk.GDBus.TestInterface"</span><span class="symbol">,</span>
1095 <span class="normal"> builder</span><span class="symbol">,</span>
1096 <span class="normal"> invalidated_builder</span><span class="symbol">),</span>
1097 <span class="normal"> </span><span class="symbol">&</span><span class="normal">error</span><span class="symbol">);</span>
1098 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-no-error">g_assert_no_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
1101 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS">TRUE</a></span><span class="symbol">;</span>
1102 <span class="cbracket">}</span>
1104 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1106 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1107 <span class="function">on_bus_acquired</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1108 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
1109 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1110 <span class="cbracket">{</span>
1111 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> registration_id</span><span class="symbol">;</span>
1113 <span class="normal"> registration_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-register-object">g_dbus_connection_register_object</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
1114 <span class="normal"> </span><span class="string">"/org/gtk/GDBus/TestObject"</span><span class="symbol">,</span>
1115 <span class="normal"> introspection_data</span><span class="symbol">-></span><span class="normal">interfaces</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">],</span>
1116 <span class="normal"> </span><span class="symbol">&</span><span class="normal">interface_vtable</span><span class="symbol">,</span>
1117 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* user_data */</span>
1118 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* user_data_free_func */</span>
1119 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span><span class="normal"> </span><span class="comment">/* GError** */</span>
1120 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">registration_id </span><span class="symbol">></span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
1122 <span class="normal"> </span><span class="comment">/* swap value of properties Foo and Bar every two seconds */</span>
1123 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-timeout-add-seconds">g_timeout_add_seconds</a></span><span class="normal"> </span><span class="symbol">(</span><span class="number">2</span><span class="symbol">,</span>
1124 <span class="normal"> on_timeout_cb</span><span class="symbol">,</span>
1125 <span class="normal"> connection</span><span class="symbol">);</span>
1126 <span class="cbracket">}</span>
1128 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1129 <span class="function">on_name_acquired</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1130 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
1131 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1132 <span class="cbracket">{</span>
1133 <span class="cbracket">}</span>
1135 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1136 <span class="function">on_name_lost</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1137 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
1138 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1139 <span class="cbracket">{</span>
1140 <span class="normal"> </span><span class="function">exit</span><span class="normal"> </span><span class="symbol">(</span><span class="number">1</span><span class="symbol">);</span>
1141 <span class="cbracket">}</span>
1143 <span class="type">int</span>
1144 <span class="function">main</span><span class="normal"> </span><span class="symbol">(</span><span class="type">int</span><span class="normal"> argc</span><span class="symbol">,</span><span class="normal"> </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">argv</span><span class="symbol">[])</span>
1145 <span class="cbracket">{</span>
1146 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> owner_id</span><span class="symbol">;</span>
1147 <span class="normal"> </span><span class="usertype">GMainLoop</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">loop</span><span class="symbol">;</span>
1149 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Type-Information.html#g-type-init">g_type_init</a></span><span class="normal"> </span><span class="symbol">();</span>
1151 <span class="normal"> </span><span class="comment">/* We are lazy here - we don't want to manually provide</span>
1152 <span class="comment"> * the introspection data structures - so we just build</span>
1153 <span class="comment"> * them from XML.</span>
1154 <span class="comment"> */</span>
1155 <span class="normal"> introspection_data </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-new-for-xml">g_dbus_node_info_new_for_xml</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_xml</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1156 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data </span><span class="symbol">!=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1158 <span class="normal"> owner_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-Owning-Bus-Names.html#g-bus-own-name">g_bus_own_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html#G-BUS-TYPE-SESSION:CAPS">G_BUS_TYPE_SESSION</a></span><span class="symbol">,</span>
1159 <span class="normal"> </span><span class="string">"org.gtk.GDBus.TestServer"</span><span class="symbol">,</span>
1160 <span class="normal"> <a href="gio-Owning-Bus-Names.html#G-BUS-NAME-OWNER-FLAGS-NONE:CAPS">G_BUS_NAME_OWNER_FLAGS_NONE</a></span><span class="symbol">,</span>
1161 <span class="normal"> on_bus_acquired</span><span class="symbol">,</span>
1162 <span class="normal"> on_name_acquired</span><span class="symbol">,</span>
1163 <span class="normal"> on_name_lost</span><span class="symbol">,</span>
1164 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
1165 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1167 <span class="normal"> loop </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-new">g_main_loop_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS">FALSE</a></span><span class="symbol">);</span>
1168 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-run">g_main_loop_run</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">loop</span><span class="symbol">);</span>
1170 <span class="normal"> </span><span class="function"><a href="gio-Owning-Bus-Names.html#g-bus-unown-name">g_bus_unown_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">owner_id</span><span class="symbol">);</span>
1172 <span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-unref">g_dbus_node_info_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data</span><span class="symbol">);</span>
1174 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
1175 <span class="cbracket">}</span></pre></td>
1182 <p><br class="example-break">
1186 <div class="example">
1187 <a name="gdbus-subtree-server"></a><p class="title"><b>Example 3. D-Bus subtree example</b></p>
1188 <div class="example-contents">
1189 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
1192 <td class="listing_lines" align="right"><pre>1
1592 <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string"><gio/gio.h></span>
1593 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><stdlib.h></span>
1594 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><string.h></span>
1596 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1598 <span class="keyword">static</span><span class="normal"> </span><span class="usertype">GDBusNodeInfo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">introspection_data </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
1599 <span class="keyword">static</span><span class="normal"> </span><span class="usertype">GDBusInterfaceInfo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">manager_interface_info </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
1600 <span class="keyword">static</span><span class="normal"> </span><span class="usertype">GDBusInterfaceInfo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">block_interface_info </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
1601 <span class="keyword">static</span><span class="normal"> </span><span class="usertype">GDBusInterfaceInfo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">partition_interface_info </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
1603 <span class="comment">/* Introspection data for the service we are exporting */</span>
1604 <span class="keyword">static</span><span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> introspection_xml</span><span class="symbol">[]</span><span class="normal"> </span><span class="symbol">=</span>
1605 <span class="normal"> </span><span class="string">"<node>"</span>
1606 <span class="normal"> </span><span class="string">" <interface name='org.gtk.GDBus.Example.Manager'>"</span>
1607 <span class="normal"> </span><span class="string">" <method name='Hello'>"</span>
1608 <span class="normal"> </span><span class="string">" <arg type='s' name='greeting' direction='in'/>"</span>
1609 <span class="normal"> </span><span class="string">" <arg type='s' name='response' direction='out'/>"</span>
1610 <span class="normal"> </span><span class="string">" </method>"</span>
1611 <span class="normal"> </span><span class="string">" </interface>"</span>
1612 <span class="normal"> </span><span class="string">" <interface name='org.gtk.GDBus.Example.Block'>"</span>
1613 <span class="normal"> </span><span class="string">" <method name='Hello'>"</span>
1614 <span class="normal"> </span><span class="string">" <arg type='s' name='greeting' direction='in'/>"</span>
1615 <span class="normal"> </span><span class="string">" <arg type='s' name='response' direction='out'/>"</span>
1616 <span class="normal"> </span><span class="string">" </method>"</span>
1617 <span class="normal"> </span><span class="string">" <property type='i' name='Major' access='read'/>"</span>
1618 <span class="normal"> </span><span class="string">" <property type='i' name='Minor' access='read'/>"</span>
1619 <span class="normal"> </span><span class="string">" <property type='s' name='Notes' access='readwrite'/>"</span>
1620 <span class="normal"> </span><span class="string">" </interface>"</span>
1621 <span class="normal"> </span><span class="string">" <interface name='org.gtk.GDBus.Example.Partition'>"</span>
1622 <span class="normal"> </span><span class="string">" <method name='Hello'>"</span>
1623 <span class="normal"> </span><span class="string">" <arg type='s' name='greeting' direction='in'/>"</span>
1624 <span class="normal"> </span><span class="string">" <arg type='s' name='response' direction='out'/>"</span>
1625 <span class="normal"> </span><span class="string">" </method>"</span>
1626 <span class="normal"> </span><span class="string">" <property type='i' name='PartitionNumber' access='read'/>"</span>
1627 <span class="normal"> </span><span class="string">" <property type='s' name='Notes' access='readwrite'/>"</span>
1628 <span class="normal"> </span><span class="string">" </interface>"</span>
1629 <span class="normal"> </span><span class="string">"</node>"</span><span class="symbol">;</span>
1631 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1633 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1634 <span class="function">manager_method_call</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1635 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1636 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1637 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
1638 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">method_name</span><span class="symbol">,</span>
1639 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">parameters</span><span class="symbol">,</span>
1640 <span class="normal"> </span><span class="usertype">GDBusMethodInvocation</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">invocation</span><span class="symbol">,</span>
1641 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1642 <span class="cbracket">{</span>
1643 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">greeting</span><span class="symbol">;</span>
1644 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">response</span><span class="symbol">;</span>
1646 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-cmpstr">g_assert_cmpstr</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">interface_name</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">==,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Manager"</span><span class="symbol">);</span>
1647 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-cmpstr">g_assert_cmpstr</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_name</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">==,</span><span class="normal"> </span><span class="string">"Hello"</span><span class="symbol">);</span>
1649 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parameters</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(&s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">greeting</span><span class="symbol">);</span>
1651 <span class="normal"> response </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup-printf">g_strdup_printf</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Method %s.%s with user_data `%s' on object path %s called with arg '%s'"</span><span class="symbol">,</span>
1652 <span class="normal"> interface_name</span><span class="symbol">,</span>
1653 <span class="normal"> method_name</span><span class="symbol">,</span>
1654 <span class="normal"> </span><span class="symbol">(</span><span class="keyword">const</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gchar">gchar</a> </span><span class="symbol">*)</span><span class="normal"> user_data</span><span class="symbol">,</span>
1655 <span class="normal"> object_path</span><span class="symbol">,</span>
1656 <span class="normal"> greeting</span><span class="symbol">);</span>
1657 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-value">g_dbus_method_invocation_return_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
1658 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(s)"</span><span class="symbol">,</span><span class="normal"> response</span><span class="symbol">));</span>
1659 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">response</span><span class="symbol">);</span>
1660 <span class="cbracket">}</span>
1662 <span class="keyword">const</span><span class="normal"> </span><span class="usertype">GDBusInterfaceVTable</span><span class="normal"> manager_vtable </span><span class="symbol">=</span>
1663 <span class="cbracket">{</span>
1664 <span class="normal"> manager_method_call</span><span class="symbol">,</span>
1665 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* get_property */</span>
1666 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a> </span><span class="comment">/* set_property */</span>
1667 <span class="cbracket">}</span><span class="symbol">;</span>
1669 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1671 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1672 <span class="function">block_method_call</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1673 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1674 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1675 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
1676 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">method_name</span><span class="symbol">,</span>
1677 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">parameters</span><span class="symbol">,</span>
1678 <span class="normal"> </span><span class="usertype">GDBusMethodInvocation</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">invocation</span><span class="symbol">,</span>
1679 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1680 <span class="cbracket">{</span>
1681 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-cmpstr">g_assert_cmpstr</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">interface_name</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">==,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Block"</span><span class="symbol">);</span>
1683 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Hello"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1684 <span class="normal"> </span><span class="cbracket">{</span>
1685 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">greeting</span><span class="symbol">;</span>
1686 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">response</span><span class="symbol">;</span>
1688 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parameters</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(&s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">greeting</span><span class="symbol">);</span>
1690 <span class="normal"> response </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup-printf">g_strdup_printf</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Method %s.%s with user_data `%s' on object path %s called with arg '%s'"</span><span class="symbol">,</span>
1691 <span class="normal"> interface_name</span><span class="symbol">,</span>
1692 <span class="normal"> method_name</span><span class="symbol">,</span>
1693 <span class="normal"> </span><span class="symbol">(</span><span class="keyword">const</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gchar">gchar</a> </span><span class="symbol">*)</span><span class="normal"> user_data</span><span class="symbol">,</span>
1694 <span class="normal"> object_path</span><span class="symbol">,</span>
1695 <span class="normal"> greeting</span><span class="symbol">);</span>
1696 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-value">g_dbus_method_invocation_return_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
1697 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(s)"</span><span class="symbol">,</span><span class="normal"> response</span><span class="symbol">));</span>
1698 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">response</span><span class="symbol">);</span>
1699 <span class="normal"> </span><span class="cbracket">}</span>
1700 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"DoStuff"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1701 <span class="normal"> </span><span class="cbracket">{</span>
1702 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-dbus-error">g_dbus_method_invocation_return_dbus_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
1703 <span class="normal"> </span><span class="string">"org.gtk.GDBus.TestSubtree.Error.Failed"</span><span class="symbol">,</span>
1704 <span class="normal"> </span><span class="string">"This method intentionally always fails"</span><span class="symbol">);</span>
1705 <span class="normal"> </span><span class="cbracket">}</span>
1706 <span class="normal"> </span><span class="keyword">else</span>
1707 <span class="normal"> </span><span class="cbracket">{</span>
1708 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-not-reached">g_assert_not_reached</a></span><span class="normal"> </span><span class="symbol">();</span>
1709 <span class="normal"> </span><span class="cbracket">}</span>
1710 <span class="cbracket">}</span>
1712 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-GVariant.html#GVariant">GVariant</a> </span><span class="symbol">*</span>
1713 <span class="function">block_get_property</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1714 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1715 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1716 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
1717 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">property_name</span><span class="symbol">,</span>
1718 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">**</span><span class="normal">error</span><span class="symbol">,</span>
1719 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1720 <span class="cbracket">{</span>
1721 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">ret</span><span class="symbol">;</span>
1722 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">node</span><span class="symbol">;</span>
1723 <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> major</span><span class="symbol">;</span>
1724 <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> minor</span><span class="symbol">;</span>
1726 <span class="normal"> node </span><span class="symbol">=</span><span class="normal"> </span><span class="function">strrchr</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">object_path</span><span class="symbol">,</span><span class="normal"> </span><span class="string">'/'</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">+</span><span class="normal"> </span><span class="number">1</span><span class="symbol">;</span>
1727 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-str-has-prefix">g_str_has_prefix</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">node</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"sda"</span><span class="symbol">))</span>
1728 <span class="normal"> major </span><span class="symbol">=</span><span class="normal"> </span><span class="number">8</span><span class="symbol">;</span>
1729 <span class="normal"> </span><span class="keyword">else</span>
1730 <span class="normal"> major </span><span class="symbol">=</span><span class="normal"> </span><span class="number">9</span><span class="symbol">;</span>
1731 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function">strlen</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">node</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">4</span><span class="symbol">)</span>
1732 <span class="normal"> minor </span><span class="symbol">=</span><span class="normal"> node</span><span class="symbol">[</span><span class="number">3</span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">-</span><span class="normal"> </span><span class="string">'0'</span><span class="symbol">;</span>
1733 <span class="normal"> </span><span class="keyword">else</span>
1734 <span class="normal"> minor </span><span class="symbol">=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
1736 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
1737 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Major"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1738 <span class="normal"> </span><span class="cbracket">{</span>
1739 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-int32">g_variant_new_int32</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">major</span><span class="symbol">);</span>
1740 <span class="normal"> </span><span class="cbracket">}</span>
1741 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Minor"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1742 <span class="normal"> </span><span class="cbracket">{</span>
1743 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-int32">g_variant_new_int32</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">minor</span><span class="symbol">);</span>
1744 <span class="normal"> </span><span class="cbracket">}</span>
1745 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Notes"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1746 <span class="normal"> </span><span class="cbracket">{</span>
1747 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Error-Reporting.html#g-set-error">g_set_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">,</span>
1748 <span class="normal"> <a href="gio-GIOError.html#G-IO-ERROR:CAPS">G_IO_ERROR</a></span><span class="symbol">,</span>
1749 <span class="normal"> <a href="gio-GIOError.html#G-IO-ERROR-FAILED:CAPS">G_IO_ERROR_FAILED</a></span><span class="symbol">,</span>
1750 <span class="normal"> </span><span class="string">"Hello %s. I thought I said reading this property "</span>
1751 <span class="normal"> </span><span class="string">"always results in an error. kthxbye"</span><span class="symbol">,</span>
1752 <span class="normal"> sender</span><span class="symbol">);</span>
1753 <span class="normal"> </span><span class="cbracket">}</span>
1754 <span class="normal"> </span><span class="keyword">else</span>
1755 <span class="normal"> </span><span class="cbracket">{</span>
1756 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-not-reached">g_assert_not_reached</a></span><span class="normal"> </span><span class="symbol">();</span>
1757 <span class="normal"> </span><span class="cbracket">}</span>
1759 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> ret</span><span class="symbol">;</span>
1760 <span class="cbracket">}</span>
1762 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gboolean">gboolean</a></span>
1763 <span class="function">block_set_property</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1764 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1765 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1766 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
1767 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">property_name</span><span class="symbol">,</span>
1768 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value</span><span class="symbol">,</span>
1769 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">**</span><span class="normal">error</span><span class="symbol">,</span>
1770 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1771 <span class="cbracket">{</span>
1772 <span class="normal"> </span><span class="comment">/* </span><span class="todo">TODO</span><span class="comment"> */</span>
1773 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-not-reached">g_assert_not_reached</a></span><span class="normal"> </span><span class="symbol">();</span>
1774 <span class="cbracket">}</span>
1776 <span class="keyword">const</span><span class="normal"> </span><span class="usertype">GDBusInterfaceVTable</span><span class="normal"> block_vtable </span><span class="symbol">=</span>
1777 <span class="cbracket">{</span>
1778 <span class="normal"> block_method_call</span><span class="symbol">,</span>
1779 <span class="normal"> block_get_property</span><span class="symbol">,</span>
1780 <span class="normal"> block_set_property</span><span class="symbol">,</span>
1781 <span class="cbracket">}</span><span class="symbol">;</span>
1783 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1785 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1786 <span class="function">partition_method_call</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1787 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1788 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1789 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
1790 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">method_name</span><span class="symbol">,</span>
1791 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">parameters</span><span class="symbol">,</span>
1792 <span class="normal"> </span><span class="usertype">GDBusMethodInvocation</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">invocation</span><span class="symbol">,</span>
1793 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1794 <span class="cbracket">{</span>
1795 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">greeting</span><span class="symbol">;</span>
1796 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">response</span><span class="symbol">;</span>
1798 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-cmpstr">g_assert_cmpstr</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">interface_name</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">==,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Partition"</span><span class="symbol">);</span>
1799 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-cmpstr">g_assert_cmpstr</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_name</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">==,</span><span class="normal"> </span><span class="string">"Hello"</span><span class="symbol">);</span>
1801 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parameters</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(&s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">greeting</span><span class="symbol">);</span>
1803 <span class="normal"> response </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup-printf">g_strdup_printf</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Method %s.%s with user_data `%s' on object path %s called with arg '%s'"</span><span class="symbol">,</span>
1804 <span class="normal"> interface_name</span><span class="symbol">,</span>
1805 <span class="normal"> method_name</span><span class="symbol">,</span>
1806 <span class="normal"> </span><span class="symbol">(</span><span class="keyword">const</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gchar">gchar</a> </span><span class="symbol">*)</span><span class="normal"> user_data</span><span class="symbol">,</span>
1807 <span class="normal"> object_path</span><span class="symbol">,</span>
1808 <span class="normal"> greeting</span><span class="symbol">);</span>
1809 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-value">g_dbus_method_invocation_return_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span>
1810 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(s)"</span><span class="symbol">,</span><span class="normal"> response</span><span class="symbol">));</span>
1811 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">response</span><span class="symbol">);</span>
1812 <span class="cbracket">}</span>
1814 <span class="keyword">const</span><span class="normal"> </span><span class="usertype">GDBusInterfaceVTable</span><span class="normal"> partition_vtable </span><span class="symbol">=</span>
1815 <span class="cbracket">{</span>
1816 <span class="normal"> partition_method_call</span><span class="symbol">,</span>
1817 <span class="normal"> </span><span class="comment">//partition_get_property,</span>
1818 <span class="normal"> </span><span class="comment">//partition_set_property</span>
1819 <span class="cbracket">}</span><span class="symbol">;</span>
1821 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1823 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gchar">gchar</a> </span><span class="symbol">**</span>
1824 <span class="function">subtree_enumerate</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1825 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1826 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1827 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1828 <span class="cbracket">{</span>
1829 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">**</span><span class="normal">nodes</span><span class="symbol">;</span>
1830 <span class="normal"> </span><span class="usertype">GPtrArray</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">p</span><span class="symbol">;</span>
1832 <span class="normal"> p </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-new">g_ptr_array_new</a></span><span class="normal"> </span><span class="symbol">();</span>
1833 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sda"</span><span class="symbol">));</span>
1834 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sda1"</span><span class="symbol">));</span>
1835 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sda2"</span><span class="symbol">));</span>
1836 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sda3"</span><span class="symbol">));</span>
1837 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sdb"</span><span class="symbol">));</span>
1838 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sdb1"</span><span class="symbol">));</span>
1839 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sdc"</span><span class="symbol">));</span>
1840 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup">g_strdup</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sdc1"</span><span class="symbol">));</span>
1841 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1842 <span class="normal"> nodes </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-Basic-Types.html#gchar">gchar</a> </span><span class="symbol">**)</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-free">g_ptr_array_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS">FALSE</a></span><span class="symbol">);</span>
1844 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> nodes</span><span class="symbol">;</span>
1845 <span class="cbracket">}</span>
1847 <span class="keyword">static</span><span class="normal"> <a href="gio-D-Bus-Introspection-Data.html#GDBusInterfaceInfo">GDBusInterfaceInfo</a> </span><span class="symbol">**</span>
1848 <span class="function">subtree_introspect</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1849 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1850 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1851 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">node</span><span class="symbol">,</span>
1852 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1853 <span class="cbracket">{</span>
1854 <span class="normal"> </span><span class="usertype">GPtrArray</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">p</span><span class="symbol">;</span>
1856 <span class="normal"> p </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-new">g_ptr_array_new</a></span><span class="normal"> </span><span class="symbol">();</span>
1857 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">node </span><span class="symbol">==</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span>
1858 <span class="normal"> </span><span class="cbracket">{</span>
1859 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-interface-info-ref">g_dbus_interface_info_ref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager_interface_info</span><span class="symbol">));</span>
1860 <span class="normal"> </span><span class="cbracket">}</span>
1861 <span class="normal"> </span><span class="keyword">else</span>
1862 <span class="normal"> </span><span class="cbracket">{</span>
1863 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-interface-info-ref">g_dbus_interface_info_ref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">block_interface_info</span><span class="symbol">));</span>
1864 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function">strlen</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">node</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">4</span><span class="symbol">)</span>
1865 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span>
1866 <span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-interface-info-ref">g_dbus_interface_info_ref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">partition_interface_info</span><span class="symbol">));</span>
1867 <span class="normal"> </span><span class="cbracket">}</span>
1869 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-add">g_ptr_array_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1871 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="gio-D-Bus-Introspection-Data.html#GDBusInterfaceInfo">GDBusInterfaceInfo</a> </span><span class="symbol">**)</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Pointer-Arrays.html#g-ptr-array-free">g_ptr_array_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">p</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS">FALSE</a></span><span class="symbol">);</span>
1872 <span class="cbracket">}</span>
1874 <span class="keyword">static</span><span class="normal"> </span><span class="keyword">const</span><span class="normal"> <a href="GDBusConnection.html#GDBusInterfaceVTable">GDBusInterfaceVTable</a> </span><span class="symbol">*</span>
1875 <span class="function">subtree_dispatch</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1876 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
1877 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
1878 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
1879 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">node</span><span class="symbol">,</span>
1880 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">out_user_data</span><span class="symbol">,</span>
1881 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1882 <span class="cbracket">{</span>
1883 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">GDBusInterfaceVTable</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">vtable_to_return</span><span class="symbol">;</span>
1884 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data_to_return</span><span class="symbol">;</span>
1886 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">interface_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Manager"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1887 <span class="normal"> </span><span class="cbracket">{</span>
1888 <span class="normal"> user_data_to_return </span><span class="symbol">=</span><span class="normal"> </span><span class="string">"The Root"</span><span class="symbol">;</span>
1889 <span class="normal"> vtable_to_return </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">manager_vtable</span><span class="symbol">;</span>
1890 <span class="normal"> </span><span class="cbracket">}</span>
1891 <span class="normal"> </span><span class="keyword">else</span>
1892 <span class="normal"> </span><span class="cbracket">{</span>
1893 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function">strlen</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">node</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">4</span><span class="symbol">)</span>
1894 <span class="normal"> user_data_to_return </span><span class="symbol">=</span><span class="normal"> </span><span class="string">"A partition"</span><span class="symbol">;</span>
1895 <span class="normal"> </span><span class="keyword">else</span>
1896 <span class="normal"> user_data_to_return </span><span class="symbol">=</span><span class="normal"> </span><span class="string">"A block device"</span><span class="symbol">;</span>
1898 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">interface_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Block"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1899 <span class="normal"> vtable_to_return </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">block_vtable</span><span class="symbol">;</span>
1900 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">interface_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Partition"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
1901 <span class="normal"> vtable_to_return </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">partition_vtable</span><span class="symbol">;</span>
1902 <span class="normal"> </span><span class="keyword">else</span>
1903 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert-not-reached">g_assert_not_reached</a></span><span class="normal"> </span><span class="symbol">();</span>
1904 <span class="normal"> </span><span class="cbracket">}</span>
1906 <span class="normal"> </span><span class="symbol">*</span><span class="normal">out_user_data </span><span class="symbol">=</span><span class="normal"> user_data_to_return</span><span class="symbol">;</span>
1908 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> vtable_to_return</span><span class="symbol">;</span>
1909 <span class="cbracket">}</span>
1911 <span class="keyword">const</span><span class="normal"> </span><span class="usertype">GDBusSubtreeVTable</span><span class="normal"> subtree_vtable </span><span class="symbol">=</span>
1912 <span class="cbracket">{</span>
1913 <span class="normal"> subtree_enumerate</span><span class="symbol">,</span>
1914 <span class="normal"> subtree_introspect</span><span class="symbol">,</span>
1915 <span class="normal"> subtree_dispatch</span>
1916 <span class="cbracket">}</span><span class="symbol">;</span>
1918 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1920 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1921 <span class="function">on_bus_acquired</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1922 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
1923 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1924 <span class="cbracket">{</span>
1925 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> registration_id</span><span class="symbol">;</span>
1927 <span class="normal"> registration_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-register-subtree">g_dbus_connection_register_subtree</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
1928 <span class="normal"> </span><span class="string">"/org/gtk/GDBus/TestSubtree/Devices"</span><span class="symbol">,</span>
1929 <span class="normal"> </span><span class="symbol">&</span><span class="normal">subtree_vtable</span><span class="symbol">,</span>
1930 <span class="normal"> <a href="GDBusConnection.html#G-DBUS-SUBTREE-FLAGS-NONE:CAPS">G_DBUS_SUBTREE_FLAGS_NONE</a></span><span class="symbol">,</span>
1931 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* user_data */</span>
1932 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* user_data_free_func */</span>
1933 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span><span class="normal"> </span><span class="comment">/* GError** */</span>
1934 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">registration_id </span><span class="symbol">></span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
1935 <span class="cbracket">}</span>
1937 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1938 <span class="function">on_name_acquired</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1939 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
1940 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1941 <span class="cbracket">{</span>
1942 <span class="cbracket">}</span>
1944 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
1945 <span class="function">on_name_lost</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
1946 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
1947 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
1948 <span class="cbracket">{</span>
1949 <span class="normal"> </span><span class="function">exit</span><span class="normal"> </span><span class="symbol">(</span><span class="number">1</span><span class="symbol">);</span>
1950 <span class="cbracket">}</span>
1952 <span class="type">int</span>
1953 <span class="function">main</span><span class="normal"> </span><span class="symbol">(</span><span class="type">int</span><span class="normal"> argc</span><span class="symbol">,</span><span class="normal"> </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">argv</span><span class="symbol">[])</span>
1954 <span class="cbracket">{</span>
1955 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> owner_id</span><span class="symbol">;</span>
1956 <span class="normal"> </span><span class="usertype">GMainLoop</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">loop</span><span class="symbol">;</span>
1958 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Type-Information.html#g-type-init">g_type_init</a></span><span class="normal"> </span><span class="symbol">();</span>
1960 <span class="normal"> </span><span class="comment">/* We are lazy here - we don't want to manually provide</span>
1961 <span class="comment"> * the introspection data structures - so we just build</span>
1962 <span class="comment"> * them from XML.</span>
1963 <span class="comment"> */</span>
1964 <span class="normal"> introspection_data </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-new-for-xml">g_dbus_node_info_new_for_xml</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_xml</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1965 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data </span><span class="symbol">!=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1967 <span class="normal"> manager_interface_info </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-lookup-interface">g_dbus_node_info_lookup_interface</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Manager"</span><span class="symbol">);</span>
1968 <span class="normal"> block_interface_info </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-lookup-interface">g_dbus_node_info_lookup_interface</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Block"</span><span class="symbol">);</span>
1969 <span class="normal"> partition_interface_info </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-lookup-interface">g_dbus_node_info_lookup_interface</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"org.gtk.GDBus.Example.Partition"</span><span class="symbol">);</span>
1970 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">manager_interface_info </span><span class="symbol">!=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1971 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">block_interface_info </span><span class="symbol">!=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1972 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">partition_interface_info </span><span class="symbol">!=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1974 <span class="normal"> owner_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-Owning-Bus-Names.html#g-bus-own-name">g_bus_own_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html#G-BUS-TYPE-SESSION:CAPS">G_BUS_TYPE_SESSION</a></span><span class="symbol">,</span>
1975 <span class="normal"> </span><span class="string">"org.gtk.GDBus.TestSubtree"</span><span class="symbol">,</span>
1976 <span class="normal"> <a href="gio-Owning-Bus-Names.html#G-BUS-NAME-OWNER-FLAGS-NONE:CAPS">G_BUS_NAME_OWNER_FLAGS_NONE</a></span><span class="symbol">,</span>
1977 <span class="normal"> on_bus_acquired</span><span class="symbol">,</span>
1978 <span class="normal"> on_name_acquired</span><span class="symbol">,</span>
1979 <span class="normal"> on_name_lost</span><span class="symbol">,</span>
1980 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
1981 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
1983 <span class="normal"> loop </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-new">g_main_loop_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS">FALSE</a></span><span class="symbol">);</span>
1984 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-run">g_main_loop_run</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">loop</span><span class="symbol">);</span>
1986 <span class="normal"> </span><span class="function"><a href="gio-Owning-Bus-Names.html#g-bus-unown-name">g_bus_unown_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">owner_id</span><span class="symbol">);</span>
1988 <span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-unref">g_dbus_node_info_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data</span><span class="symbol">);</span>
1990 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
1991 <span class="cbracket">}</span></pre></td>
1998 <p><br class="example-break">
2002 <div class="example">
2003 <a name="gdbus-unix-fd-client"></a><p class="title"><b>Example 4. D-Bus UNIX File Descriptor example</b></p>
2004 <div class="example-contents">
2005 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
2008 <td class="listing_lines" align="right"><pre>1
2142 <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string"><string.h></span>
2143 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><stdlib.h></span>
2145 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><sys/types.h></span>
2146 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><unistd.h></span>
2148 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><time.h></span>
2150 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><gio/gio.h></span>
2151 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><gio/gunixfdlist.h></span>
2153 <span class="comment">/* see gdbus-example-server.c for the server implementation */</span>
2154 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gint">gint</a></span>
2155 <span class="function">get_server_stdout</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2156 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name_owner</span><span class="symbol">,</span>
2157 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">**</span><span class="normal">error</span><span class="symbol">)</span>
2158 <span class="cbracket">{</span>
2159 <span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">method_call_message</span><span class="symbol">;</span>
2160 <span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">method_reply_message</span><span class="symbol">;</span>
2161 <span class="normal"> </span><span class="usertype">GUnixFDList</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">fd_list</span><span class="symbol">;</span>
2162 <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> fd</span><span class="symbol">;</span>
2164 <span class="normal"> fd </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">;</span>
2165 <span class="normal"> method_call_message </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
2166 <span class="normal"> method_reply_message </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
2168 <span class="normal"> method_call_message </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusMessage.html#g-dbus-message-new-method-call">g_dbus_message_new_method_call</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">name_owner</span><span class="symbol">,</span>
2169 <span class="normal"> </span><span class="string">"/org/gtk/GDBus/TestObject"</span><span class="symbol">,</span>
2170 <span class="normal"> </span><span class="string">"org.gtk.GDBus.TestInterface"</span><span class="symbol">,</span>
2171 <span class="normal"> </span><span class="string">"GimmeStdout"</span><span class="symbol">);</span>
2172 <span class="normal"> method_reply_message </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-send-message-with-reply-sync">g_dbus_connection_send_message_with_reply_sync</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
2173 <span class="normal"> method_call_message</span><span class="symbol">,</span>
2174 <span class="normal"> <a href="GDBusConnection.html#G-DBUS-SEND-MESSAGE-FLAGS-NONE:CAPS">G_DBUS_SEND_MESSAGE_FLAGS_NONE</a></span><span class="symbol">,</span>
2175 <span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">,</span>
2176 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* out_serial */</span>
2177 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* cancellable */</span>
2178 <span class="normal"> error</span><span class="symbol">);</span>
2179 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_reply_message </span><span class="symbol">==</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span>
2180 <span class="normal"> </span><span class="keyword">goto</span><span class="normal"> out</span><span class="symbol">;</span>
2182 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="GDBusMessage.html#g-dbus-message-get-message-type">g_dbus_message_get_message_type</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_reply_message</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> <a href="GDBusMessage.html#G-DBUS-MESSAGE-TYPE-ERROR:CAPS">G_DBUS_MESSAGE_TYPE_ERROR</a></span><span class="symbol">)</span>
2183 <span class="normal"> </span><span class="cbracket">{</span>
2184 <span class="normal"> </span><span class="function"><a href="GDBusMessage.html#g-dbus-message-to-gerror">g_dbus_message_to_gerror</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_reply_message</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">);</span>
2185 <span class="normal"> </span><span class="keyword">goto</span><span class="normal"> out</span><span class="symbol">;</span>
2186 <span class="normal"> </span><span class="cbracket">}</span>
2188 <span class="normal"> fd_list </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusMessage.html#g-dbus-message-get-unix-fd-list">g_dbus_message_get_unix_fd_list</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_reply_message</span><span class="symbol">);</span>
2189 <span class="normal"> fd </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GUnixFDList.html#g-unix-fd-list-get">g_unix_fd_list_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">fd_list</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">);</span>
2191 <span class="label"> out:</span>
2192 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_call_message</span><span class="symbol">);</span>
2193 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_reply_message</span><span class="symbol">);</span>
2195 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> fd</span><span class="symbol">;</span>
2196 <span class="cbracket">}</span>
2198 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2199 <span class="function">on_name_appeared</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2200 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
2201 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name_owner</span><span class="symbol">,</span>
2202 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
2203 <span class="cbracket">{</span>
2204 <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> fd</span><span class="symbol">;</span>
2205 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error</span><span class="symbol">;</span>
2207 <span class="normal"> error </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
2208 <span class="normal"> fd </span><span class="symbol">=</span><span class="normal"> </span><span class="function">get_server_stdout</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span><span class="normal"> name_owner</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">error</span><span class="symbol">);</span>
2209 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">fd </span><span class="symbol">==</span><span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">)</span>
2210 <span class="normal"> </span><span class="cbracket">{</span>
2211 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Warnings-and-Assertions.html#g-printerr">g_printerr</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Error invoking GimmeStdout(): %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span>
2212 <span class="normal"> error</span><span class="symbol">-></span><span class="normal">message</span><span class="symbol">);</span>
2213 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Error-Reporting.html#g-error-free">g_error_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
2214 <span class="normal"> </span><span class="function">exit</span><span class="normal"> </span><span class="symbol">(</span><span class="number">1</span><span class="symbol">);</span>
2215 <span class="normal"> </span><span class="cbracket">}</span>
2216 <span class="normal"> </span><span class="keyword">else</span>
2217 <span class="normal"> </span><span class="cbracket">{</span>
2218 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> now_buf</span><span class="symbol">[</span><span class="number">256</span><span class="symbol">];</span>
2219 <span class="normal"> </span><span class="usertype">time_t</span><span class="normal"> now</span><span class="symbol">;</span>
2220 <span class="normal"> </span><span class="usertype">gssize</span><span class="normal"> len</span><span class="symbol">;</span>
2221 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">str</span><span class="symbol">;</span>
2223 <span class="normal"> now </span><span class="symbol">=</span><span class="normal"> </span><span class="function">time</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2224 <span class="normal"> </span><span class="function">strftime</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">now_buf</span><span class="symbol">,</span>
2225 <span class="normal"> </span><span class="keyword">sizeof</span><span class="normal"> now_buf</span><span class="symbol">,</span>
2226 <span class="normal"> </span><span class="string">"%c"</span><span class="symbol">,</span>
2227 <span class="normal"> </span><span class="function">localtime</span><span class="normal"> </span><span class="symbol">(&</span><span class="normal">now</span><span class="symbol">));</span>
2229 <span class="normal"> str </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strdup-printf">g_strdup_printf</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"On %s, gdbus-example-unix-fd-client with pid %d was here!</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span>
2230 <span class="normal"> now_buf</span><span class="symbol">,</span>
2231 <span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-Basic-Types.html#gint">gint</a></span><span class="symbol">)</span><span class="normal"> </span><span class="function">getpid</span><span class="normal"> </span><span class="symbol">());</span>
2232 <span class="normal"> len </span><span class="symbol">=</span><span class="normal"> </span><span class="function">strlen</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">str</span><span class="symbol">);</span>
2233 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Warnings-and-Assertions.html#g-warn-if-fail">g_warn_if_fail</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">write</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">fd</span><span class="symbol">,</span><span class="normal"> str</span><span class="symbol">,</span><span class="normal"> len</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> len</span><span class="symbol">);</span>
2234 <span class="normal"> </span><span class="function">close</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">fd</span><span class="symbol">);</span>
2236 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Wrote the following on server's stdout:</span><span class="specialchar">\n</span><span class="string">%s"</span><span class="symbol">,</span><span class="normal"> str</span><span class="symbol">);</span>
2238 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">str</span><span class="symbol">);</span>
2239 <span class="normal"> </span><span class="function">exit</span><span class="normal"> </span><span class="symbol">(</span><span class="number">0</span><span class="symbol">);</span>
2240 <span class="normal"> </span><span class="cbracket">}</span>
2241 <span class="cbracket">}</span>
2243 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2244 <span class="function">on_name_vanished</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2245 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
2246 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
2247 <span class="cbracket">{</span>
2248 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Warnings-and-Assertions.html#g-printerr">g_printerr</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Failed to get name owner for %s</span><span class="specialchar">\n</span><span class="string">"</span>
2249 <span class="normal"> </span><span class="string">"Is ./gdbus-example-server running?</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span>
2250 <span class="normal"> name</span><span class="symbol">);</span>
2251 <span class="normal"> </span><span class="function">exit</span><span class="normal"> </span><span class="symbol">(</span><span class="number">1</span><span class="symbol">);</span>
2252 <span class="cbracket">}</span>
2254 <span class="type">int</span>
2255 <span class="function">main</span><span class="normal"> </span><span class="symbol">(</span><span class="type">int</span><span class="normal"> argc</span><span class="symbol">,</span><span class="normal"> </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">argv</span><span class="symbol">[])</span>
2256 <span class="cbracket">{</span>
2257 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> watcher_id</span><span class="symbol">;</span>
2258 <span class="normal"> </span><span class="usertype">GMainLoop</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">loop</span><span class="symbol">;</span>
2260 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Type-Information.html#g-type-init">g_type_init</a></span><span class="normal"> </span><span class="symbol">();</span>
2262 <span class="normal"> watcher_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-Watching-Bus-Names.html#g-bus-watch-name">g_bus_watch_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html#G-BUS-TYPE-SESSION:CAPS">G_BUS_TYPE_SESSION</a></span><span class="symbol">,</span>
2263 <span class="normal"> </span><span class="string">"org.gtk.GDBus.TestServer"</span><span class="symbol">,</span>
2264 <span class="normal"> <a href="gio-Watching-Bus-Names.html#G-BUS-NAME-WATCHER-FLAGS-NONE:CAPS">G_BUS_NAME_WATCHER_FLAGS_NONE</a></span><span class="symbol">,</span>
2265 <span class="normal"> on_name_appeared</span><span class="symbol">,</span>
2266 <span class="normal"> on_name_vanished</span><span class="symbol">,</span>
2267 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
2268 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2270 <span class="normal"> loop </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-new">g_main_loop_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS">FALSE</a></span><span class="symbol">);</span>
2271 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-run">g_main_loop_run</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">loop</span><span class="symbol">);</span>
2273 <span class="normal"> </span><span class="function"><a href="gio-Watching-Bus-Names.html#g-bus-unwatch-name">g_bus_unwatch_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">watcher_id</span><span class="symbol">);</span>
2274 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
2275 <span class="cbracket">}</span></pre></td>
2282 <p><br class="example-break">
2286 <div class="example">
2287 <a name="gdbus-export"></a><p class="title"><b>Example 5. Exporting a GObject</b></p>
2288 <div class="example-contents">
2289 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
2292 <td class="listing_lines" align="right"><pre>1
2628 <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string"><gio/gio.h></span>
2629 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><stdlib.h></span>
2631 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
2633 <span class="comment">/* The object we want to export */</span>
2634 <span class="keyword">typedef</span><span class="normal"> </span><span class="keyword">struct</span><span class="normal"> </span><span class="classname">_MyObjectClass</span><span class="normal"> MyObjectClass</span><span class="symbol">;</span>
2635 <span class="keyword">typedef</span><span class="normal"> </span><span class="keyword">struct</span><span class="normal"> </span><span class="classname">_MyObject</span><span class="normal"> MyObject</span><span class="symbol">;</span>
2637 <span class="keyword">struct</span><span class="normal"> </span><span class="classname">_MyObjectClass</span>
2638 <span class="cbracket">{</span>
2639 <span class="normal"> </span><span class="usertype">GObjectClass</span><span class="normal"> parent_class</span><span class="symbol">;</span>
2640 <span class="cbracket">}</span><span class="symbol">;</span>
2642 <span class="keyword">struct</span><span class="normal"> </span><span class="classname">_MyObject</span>
2643 <span class="cbracket">{</span>
2644 <span class="normal"> </span><span class="usertype">GObject</span><span class="normal"> parent_instance</span><span class="symbol">;</span>
2646 <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> count</span><span class="symbol">;</span>
2647 <span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">;</span>
2648 <span class="cbracket">}</span><span class="symbol">;</span>
2650 <span class="keyword">enum</span>
2651 <span class="cbracket">{</span>
2652 <span class="normal"> PROP_0</span><span class="symbol">,</span>
2653 <span class="normal"> PROP_COUNT</span><span class="symbol">,</span>
2654 <span class="normal"> PROP_NAME</span>
2655 <span class="cbracket">}</span><span class="symbol">;</span>
2657 <span class="keyword">static</span><span class="normal"> </span><span class="usertype">GType</span><span class="normal"> </span><span class="function">my_object_get_type</span><span class="normal"> </span><span class="symbol">(</span><span class="type">void</span><span class="symbol">);</span>
2658 <span class="function"><a href="./../gobject/gobject/gobject-Type-Information.html#G-DEFINE-TYPE:CAPS">G_DEFINE_TYPE</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">MyObject</span><span class="symbol">,</span><span class="normal"> my_object</span><span class="symbol">,</span><span class="normal"> <a href="./../gobject/gobject/gobject-Type-Information.html#G-TYPE-OBJECT:CAPS">G_TYPE_OBJECT</a></span><span class="symbol">);</span>
2660 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2661 <span class="function">my_object_finalize</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object</span><span class="symbol">)</span>
2662 <span class="cbracket">{</span>
2663 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">MyObject</span><span class="symbol">*)</span><span class="normal">object</span><span class="symbol">;</span>
2665 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">-></span><span class="normal">name</span><span class="symbol">);</span>
2667 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#G-OBJECT-CLASS:CAPS">G_OBJECT_CLASS</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">my_object_parent_class</span><span class="symbol">)-></span><span class="function">finalize</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">object</span><span class="symbol">);</span>
2668 <span class="cbracket">}</span>
2670 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2671 <span class="function">my_object_init</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object</span><span class="symbol">)</span>
2672 <span class="cbracket">{</span>
2673 <span class="normal"> object</span><span class="symbol">-></span><span class="normal">count </span><span class="symbol">=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
2674 <span class="normal"> object</span><span class="symbol">-></span><span class="normal">name </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
2675 <span class="cbracket">}</span>
2677 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2678 <span class="function">my_object_get_property</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object</span><span class="symbol">,</span>
2679 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> prop_id</span><span class="symbol">,</span>
2680 <span class="normal"> </span><span class="usertype">GValue</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value</span><span class="symbol">,</span>
2681 <span class="normal"> </span><span class="usertype">GParamSpec</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">pspec</span><span class="symbol">)</span>
2682 <span class="cbracket">{</span>
2683 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">MyObject</span><span class="symbol">*)</span><span class="normal">object</span><span class="symbol">;</span>
2685 <span class="normal"> </span><span class="keyword">switch</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">prop_id</span><span class="symbol">)</span>
2686 <span class="normal"> </span><span class="cbracket">{</span>
2687 <span class="normal"> </span><span class="keyword">case</span><span class="normal"> PROP_COUNT</span><span class="symbol">:</span>
2688 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Standard-Parameter-and-Value-Types.html#g-value-set-int">g_value_set_int</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">,</span><span class="normal"> myobj</span><span class="symbol">-></span><span class="normal">count</span><span class="symbol">);</span>
2689 <span class="normal"> </span><span class="keyword">break</span><span class="symbol">;</span>
2691 <span class="normal"> </span><span class="keyword">case</span><span class="normal"> PROP_NAME</span><span class="symbol">:</span>
2692 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Standard-Parameter-and-Value-Types.html#g-value-set-string">g_value_set_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">,</span><span class="normal"> myobj</span><span class="symbol">-></span><span class="normal">name</span><span class="symbol">);</span>
2693 <span class="normal"> </span><span class="keyword">break</span><span class="symbol">;</span>
2695 <span class="label"> default:</span>
2696 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#G-OBJECT-WARN-INVALID-PROPERTY-ID:CAPS">G_OBJECT_WARN_INVALID_PROPERTY_ID</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">object</span><span class="symbol">,</span><span class="normal"> prop_id</span><span class="symbol">,</span><span class="normal"> pspec</span><span class="symbol">);</span>
2697 <span class="normal"> </span><span class="cbracket">}</span>
2698 <span class="cbracket">}</span>
2700 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2701 <span class="function">my_object_set_property</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object</span><span class="symbol">,</span>
2702 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> prop_id</span><span class="symbol">,</span>
2703 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">GValue</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value</span><span class="symbol">,</span>
2704 <span class="normal"> </span><span class="usertype">GParamSpec</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">pspec</span><span class="symbol">)</span>
2705 <span class="cbracket">{</span>
2706 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">MyObject</span><span class="symbol">*)</span><span class="normal">object</span><span class="symbol">;</span>
2708 <span class="normal"> </span><span class="keyword">switch</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">prop_id</span><span class="symbol">)</span>
2709 <span class="normal"> </span><span class="cbracket">{</span>
2710 <span class="normal"> </span><span class="keyword">case</span><span class="normal"> PROP_COUNT</span><span class="symbol">:</span>
2711 <span class="normal"> myobj</span><span class="symbol">-></span><span class="normal">count </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Standard-Parameter-and-Value-Types.html#g-value-get-int">g_value_get_int</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">);</span>
2712 <span class="normal"> </span><span class="keyword">break</span><span class="symbol">;</span>
2714 <span class="normal"> </span><span class="keyword">case</span><span class="normal"> PROP_NAME</span><span class="symbol">:</span>
2715 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">-></span><span class="normal">name</span><span class="symbol">);</span>
2716 <span class="normal"> myobj</span><span class="symbol">-></span><span class="normal">name </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Standard-Parameter-and-Value-Types.html#g-value-dup-string">g_value_dup_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">);</span>
2717 <span class="normal"> </span><span class="keyword">break</span><span class="symbol">;</span>
2719 <span class="label"> default:</span>
2720 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#G-OBJECT-WARN-INVALID-PROPERTY-ID:CAPS">G_OBJECT_WARN_INVALID_PROPERTY_ID</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">object</span><span class="symbol">,</span><span class="normal"> prop_id</span><span class="symbol">,</span><span class="normal"> pspec</span><span class="symbol">);</span>
2721 <span class="normal"> </span><span class="cbracket">}</span>
2722 <span class="cbracket">}</span>
2724 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2725 <span class="function">my_object_class_init</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">MyObjectClass</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">class</span><span class="symbol">)</span>
2726 <span class="cbracket">{</span>
2727 <span class="normal"> </span><span class="usertype">GObjectClass</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">gobject_class </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#G-OBJECT-CLASS:CAPS">G_OBJECT_CLASS</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">class</span><span class="symbol">);</span>
2729 <span class="normal"> gobject_class</span><span class="symbol">-></span><span class="normal">finalize </span><span class="symbol">=</span><span class="normal"> my_object_finalize</span><span class="symbol">;</span>
2730 <span class="normal"> gobject_class</span><span class="symbol">-></span><span class="normal">set_property </span><span class="symbol">=</span><span class="normal"> my_object_set_property</span><span class="symbol">;</span>
2731 <span class="normal"> gobject_class</span><span class="symbol">-></span><span class="normal">get_property </span><span class="symbol">=</span><span class="normal"> my_object_get_property</span><span class="symbol">;</span>
2733 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-class-install-property">g_object_class_install_property</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">gobject_class</span><span class="symbol">,</span>
2734 <span class="normal"> PROP_COUNT</span><span class="symbol">,</span>
2735 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Standard-Parameter-and-Value-Types.html#g-param-spec-int">g_param_spec_int</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"count"</span><span class="symbol">,</span>
2736 <span class="normal"> </span><span class="string">"Count"</span><span class="symbol">,</span>
2737 <span class="normal"> </span><span class="string">"Count"</span><span class="symbol">,</span>
2738 <span class="normal"> </span><span class="number">0</span><span class="symbol">,</span><span class="normal"> </span><span class="number">99999</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span>
2739 <span class="normal"> <a href="./../gobject/gobject/gobject-GParamSpec.html#G-PARAM-READWRITE:CAPS">G_PARAM_READWRITE</a></span><span class="symbol">));</span>
2741 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-class-install-property">g_object_class_install_property</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">gobject_class</span><span class="symbol">,</span>
2742 <span class="normal"> PROP_NAME</span><span class="symbol">,</span>
2743 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Standard-Parameter-and-Value-Types.html#g-param-spec-string">g_param_spec_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"name"</span><span class="symbol">,</span>
2744 <span class="normal"> </span><span class="string">"Name"</span><span class="symbol">,</span>
2745 <span class="normal"> </span><span class="string">"Name"</span><span class="symbol">,</span>
2746 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
2747 <span class="normal"> <a href="./../gobject/gobject/gobject-GParamSpec.html#G-PARAM-READWRITE:CAPS">G_PARAM_READWRITE</a></span><span class="symbol">));</span>
2748 <span class="cbracket">}</span>
2750 <span class="comment">/* A method that we want to export */</span>
2751 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2752 <span class="function">my_object_change_count</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj</span><span class="symbol">,</span>
2753 <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> change</span><span class="symbol">)</span>
2754 <span class="cbracket">{</span>
2755 <span class="normal"> myobj</span><span class="symbol">-></span><span class="normal">count </span><span class="symbol">=</span><span class="normal"> </span><span class="number">2</span><span class="normal"> </span><span class="symbol">*</span><span class="normal"> myobj</span><span class="symbol">-></span><span class="normal">count </span><span class="symbol">+</span><span class="normal"> change</span><span class="symbol">;</span>
2757 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-notify">g_object_notify</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#G-OBJECT:CAPS">G_OBJECT</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">),</span><span class="normal"> </span><span class="string">"count"</span><span class="symbol">);</span>
2758 <span class="cbracket">}</span>
2760 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
2762 <span class="keyword">static</span><span class="normal"> </span><span class="usertype">GDBusNodeInfo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">introspection_data </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
2764 <span class="comment">/* Introspection data for the service we are exporting */</span>
2765 <span class="keyword">static</span><span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> introspection_xml</span><span class="symbol">[]</span><span class="normal"> </span><span class="symbol">=</span>
2766 <span class="normal"> </span><span class="string">"<node>"</span>
2767 <span class="normal"> </span><span class="string">" <interface name='org.myorg.MyObject'>"</span>
2768 <span class="normal"> </span><span class="string">" <method name='ChangeCount'>"</span>
2769 <span class="normal"> </span><span class="string">" <arg type='i' name='change' direction='in'/>"</span>
2770 <span class="normal"> </span><span class="string">" </method>"</span>
2771 <span class="normal"> </span><span class="string">" <property type='i' name='Count' access='read'/>"</span>
2772 <span class="normal"> </span><span class="string">" <property type='s' name='Name' access='readwrite'/>"</span>
2773 <span class="normal"> </span><span class="string">" </interface>"</span>
2774 <span class="normal"> </span><span class="string">"</node>"</span><span class="symbol">;</span>
2777 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2778 <span class="function">handle_method_call</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2779 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
2780 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
2781 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
2782 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">method_name</span><span class="symbol">,</span>
2783 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">parameters</span><span class="symbol">,</span>
2784 <span class="normal"> </span><span class="usertype">GDBusMethodInvocation</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">invocation</span><span class="symbol">,</span>
2785 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
2786 <span class="cbracket">{</span>
2787 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj </span><span class="symbol">=</span><span class="normal"> user_data</span><span class="symbol">;</span>
2789 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">method_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"ChangeCount"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
2790 <span class="normal"> </span><span class="cbracket">{</span>
2791 <span class="normal"> </span><span class="usertype">gint</span><span class="normal"> change</span><span class="symbol">;</span>
2792 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parameters</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(i)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">change</span><span class="symbol">);</span>
2794 <span class="normal"> </span><span class="function">my_object_change_count</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">,</span><span class="normal"> change</span><span class="symbol">);</span>
2796 <span class="normal"> </span><span class="function"><a href="GDBusMethodInvocation.html#g-dbus-method-invocation-return-value">g_dbus_method_invocation_return_value</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">invocation</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2797 <span class="normal"> </span><span class="cbracket">}</span>
2798 <span class="cbracket">}</span>
2800 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-GVariant.html#GVariant">GVariant</a> </span><span class="symbol">*</span>
2801 <span class="function">handle_get_property</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2802 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
2803 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
2804 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
2805 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">property_name</span><span class="symbol">,</span>
2806 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">**</span><span class="normal">error</span><span class="symbol">,</span>
2807 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
2808 <span class="cbracket">{</span>
2809 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">ret</span><span class="symbol">;</span>
2810 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj </span><span class="symbol">=</span><span class="normal"> user_data</span><span class="symbol">;</span>
2812 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
2813 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Count"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
2814 <span class="normal"> </span><span class="cbracket">{</span>
2815 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-int32">g_variant_new_int32</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">-></span><span class="normal">count</span><span class="symbol">);</span>
2816 <span class="normal"> </span><span class="cbracket">}</span>
2817 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Name"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
2818 <span class="normal"> </span><span class="cbracket">{</span>
2819 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">-></span><span class="normal">name </span><span class="symbol">?</span><span class="normal"> myobj</span><span class="symbol">-></span><span class="normal">name </span><span class="symbol">:</span><span class="normal"> </span><span class="string">""</span><span class="symbol">);</span>
2820 <span class="normal"> </span><span class="cbracket">}</span>
2822 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> ret</span><span class="symbol">;</span>
2823 <span class="cbracket">}</span>
2825 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gboolean">gboolean</a></span>
2826 <span class="function">handle_set_property</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2827 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">sender</span><span class="symbol">,</span>
2828 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">object_path</span><span class="symbol">,</span>
2829 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">interface_name</span><span class="symbol">,</span>
2830 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">property_name</span><span class="symbol">,</span>
2831 <span class="normal"> </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value</span><span class="symbol">,</span>
2832 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">**</span><span class="normal">error</span><span class="symbol">,</span>
2833 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
2834 <span class="cbracket">{</span>
2835 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj </span><span class="symbol">=</span><span class="normal"> user_data</span><span class="symbol">;</span>
2837 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Count"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
2838 <span class="normal"> </span><span class="cbracket">{</span>
2839 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-set">g_object_set</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"count"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get-int32">g_variant_get_int32</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">),</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2840 <span class="normal"> </span><span class="cbracket">}</span>
2841 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">property_name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Name"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
2842 <span class="normal"> </span><span class="cbracket">{</span>
2843 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-set">g_object_set</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"name"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get-string">g_variant_get_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">),</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2844 <span class="normal"> </span><span class="cbracket">}</span>
2846 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS">TRUE</a></span><span class="symbol">;</span>
2847 <span class="cbracket">}</span>
2850 <span class="comment">/* for now */</span>
2851 <span class="keyword">static</span><span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">GDBusInterfaceVTable</span><span class="normal"> interface_vtable </span><span class="symbol">=</span>
2852 <span class="cbracket">{</span>
2853 <span class="normal"> handle_method_call</span><span class="symbol">,</span>
2854 <span class="normal"> handle_get_property</span><span class="symbol">,</span>
2855 <span class="normal"> handle_set_property</span>
2856 <span class="cbracket">}</span><span class="symbol">;</span>
2858 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2859 <span class="function">send_property_change</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">obj</span><span class="symbol">,</span>
2860 <span class="normal"> </span><span class="usertype">GParamSpec</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">pspec</span><span class="symbol">,</span>
2861 <span class="normal"> </span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">)</span>
2862 <span class="cbracket">{</span>
2863 <span class="normal"> </span><span class="usertype">GVariantBuilder</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">builder</span><span class="symbol">;</span>
2864 <span class="normal"> </span><span class="usertype">GVariantBuilder</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">invalidated_builder</span><span class="symbol">;</span>
2865 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">MyObject </span><span class="symbol">*)</span><span class="normal">obj</span><span class="symbol">;</span>
2867 <span class="normal"> builder </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-new">g_variant_builder_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-GVariantType.html#G-VARIANT-TYPE-ARRAY:CAPS">G_VARIANT_TYPE_ARRAY</a></span><span class="symbol">);</span>
2868 <span class="normal"> invalidated_builder </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-new">g_variant_builder_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-GVariantType.html#G-VARIANT-TYPE:CAPS">G_VARIANT_TYPE</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"as"</span><span class="symbol">));</span>
2870 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pspec</span><span class="symbol">-></span><span class="normal">name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"count"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
2871 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span>
2872 <span class="normal"> </span><span class="string">"{sv}"</span><span class="symbol">,</span>
2873 <span class="normal"> </span><span class="string">"Count"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-int32">g_variant_new_int32</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">-></span><span class="normal">count</span><span class="symbol">));</span>
2874 <span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="./../glib/glib/glib-String-Utility-Functions.html#g-strcmp0">g_strcmp0</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">pspec</span><span class="symbol">-></span><span class="normal">name</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"name"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> </span><span class="number">0</span><span class="symbol">)</span>
2875 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span>
2876 <span class="normal"> </span><span class="string">"{sv}"</span><span class="symbol">,</span>
2877 <span class="normal"> </span><span class="string">"Name"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">-></span><span class="normal">name </span><span class="symbol">?</span><span class="normal"> myobj</span><span class="symbol">-></span><span class="normal">name </span><span class="symbol">:</span><span class="normal"> </span><span class="string">""</span><span class="symbol">));</span>
2879 <span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-emit-signal">g_dbus_connection_emit_signal</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
2880 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
2881 <span class="normal"> </span><span class="string">"/org/myorg/MyObject"</span><span class="symbol">,</span>
2882 <span class="normal"> </span><span class="string">"org.freedesktop.DBus.Properties"</span><span class="symbol">,</span>
2883 <span class="normal"> </span><span class="string">"PropertiesChanged"</span><span class="symbol">,</span>
2884 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(sa{sv}as)"</span><span class="symbol">,</span>
2885 <span class="normal"> </span><span class="string">"org.myorg.MyObject"</span><span class="symbol">,</span>
2886 <span class="normal"> builder</span><span class="symbol">,</span>
2887 <span class="normal"> invalidated_builder</span><span class="symbol">),</span>
2888 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2889 <span class="cbracket">}</span>
2891 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2892 <span class="function">on_bus_acquired</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2893 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
2894 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
2895 <span class="cbracket">{</span>
2896 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj </span><span class="symbol">=</span><span class="normal"> user_data</span><span class="symbol">;</span>
2897 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> registration_id</span><span class="symbol">;</span>
2899 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Signals.html#g-signal-connect">g_signal_connect</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"notify"</span><span class="symbol">,</span>
2900 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Closures.html#G-CALLBACK:CAPS">G_CALLBACK</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">send_property_change</span><span class="symbol">),</span><span class="normal"> connection</span><span class="symbol">);</span>
2901 <span class="normal"> registration_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-register-object">g_dbus_connection_register_object</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
2902 <span class="normal"> </span><span class="string">"/org/myorg/MyObject"</span><span class="symbol">,</span>
2903 <span class="normal"> introspection_data</span><span class="symbol">-></span><span class="normal">interfaces</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">],</span>
2904 <span class="normal"> </span><span class="symbol">&</span><span class="normal">interface_vtable</span><span class="symbol">,</span>
2905 <span class="normal"> myobj</span><span class="symbol">,</span>
2906 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="comment">/* user_data_free_func */</span>
2907 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span><span class="normal"> </span><span class="comment">/* GError** */</span>
2908 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">registration_id </span><span class="symbol">></span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
2909 <span class="cbracket">}</span>
2911 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2912 <span class="function">on_name_acquired</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2913 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
2914 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
2915 <span class="cbracket">{</span>
2916 <span class="cbracket">}</span>
2918 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
2919 <span class="function">on_name_lost</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">,</span>
2920 <span class="normal"> </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">name</span><span class="symbol">,</span>
2921 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
2922 <span class="cbracket">{</span>
2923 <span class="normal"> </span><span class="function">exit</span><span class="normal"> </span><span class="symbol">(</span><span class="number">1</span><span class="symbol">);</span>
2924 <span class="cbracket">}</span>
2926 <span class="type">int</span>
2927 <span class="function">main</span><span class="normal"> </span><span class="symbol">(</span><span class="type">int</span><span class="normal"> argc</span><span class="symbol">,</span><span class="normal"> </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">argv</span><span class="symbol">[])</span>
2928 <span class="cbracket">{</span>
2929 <span class="normal"> </span><span class="usertype">guint</span><span class="normal"> owner_id</span><span class="symbol">;</span>
2930 <span class="normal"> </span><span class="usertype">GMainLoop</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">loop</span><span class="symbol">;</span>
2931 <span class="normal"> </span><span class="usertype">MyObject</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">myobj</span><span class="symbol">;</span>
2933 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-Type-Information.html#g-type-init">g_type_init</a></span><span class="normal"> </span><span class="symbol">();</span>
2935 <span class="normal"> </span><span class="comment">/* We are lazy here - we don't want to manually provide</span>
2936 <span class="comment"> * the introspection data structures - so we just build</span>
2937 <span class="comment"> * them from XML.</span>
2938 <span class="comment"> */</span>
2939 <span class="normal"> introspection_data </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-new-for-xml">g_dbus_node_info_new_for_xml</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_xml</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2940 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Testing.html#g-assert">g_assert</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data </span><span class="symbol">!=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2942 <span class="normal"> myobj </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-new">g_object_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">my_object_get_type</span><span class="normal"> </span><span class="symbol">(),</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2944 <span class="normal"> owner_id </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-Owning-Bus-Names.html#g-bus-own-name">g_bus_own_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html#G-BUS-TYPE-SESSION:CAPS">G_BUS_TYPE_SESSION</a></span><span class="symbol">,</span>
2945 <span class="normal"> </span><span class="string">"org.myorg.MyObject"</span><span class="symbol">,</span>
2946 <span class="normal"> <a href="gio-Owning-Bus-Names.html#G-BUS-NAME-OWNER-FLAGS-NONE:CAPS">G_BUS_NAME_OWNER_FLAGS_NONE</a></span><span class="symbol">,</span>
2947 <span class="normal"> on_bus_acquired</span><span class="symbol">,</span>
2948 <span class="normal"> on_name_acquired</span><span class="symbol">,</span>
2949 <span class="normal"> on_name_lost</span><span class="symbol">,</span>
2950 <span class="normal"> myobj</span><span class="symbol">,</span>
2951 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
2953 <span class="normal"> loop </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-new">g_main_loop_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS">FALSE</a></span><span class="symbol">);</span>
2954 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-run">g_main_loop_run</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">loop</span><span class="symbol">);</span>
2956 <span class="normal"> </span><span class="function"><a href="gio-Owning-Bus-Names.html#g-bus-unown-name">g_bus_unown_name</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">owner_id</span><span class="symbol">);</span>
2958 <span class="normal"> </span><span class="function"><a href="gio-D-Bus-Introspection-Data.html#g-dbus-node-info-unref">g_dbus_node_info_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">introspection_data</span><span class="symbol">);</span>
2960 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">myobj</span><span class="symbol">);</span>
2962 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
2963 <span class="cbracket">}</span></pre></td>
2970 <p><br class="example-break">
2973 <div class="refsect1">
2974 <a name="GDBusConnection.details"></a><h2>Details</h2>
2975 <div class="refsect2">
2976 <a name="GBusType"></a><h3>enum GBusType</h3>
2977 <pre class="programlisting">typedef enum {
2978 G_BUS_TYPE_STARTER = -1,
2979 G_BUS_TYPE_NONE = 0,
2980 G_BUS_TYPE_SYSTEM = 1,
2981 G_BUS_TYPE_SESSION = 2
2985 An enumeration for well-known message buses.
2987 <div class="variablelist"><table border="0">
2988 <col align="left" valign="top">
2991 <td><p><a name="G-BUS-TYPE-STARTER:CAPS"></a><span class="term"><code class="literal">G_BUS_TYPE_STARTER</code></span></p></td>
2992 <td>An alias for the message bus that activated the process, if any.
2996 <td><p><a name="G-BUS-TYPE-NONE:CAPS"></a><span class="term"><code class="literal">G_BUS_TYPE_NONE</code></span></p></td>
2997 <td>Not a message bus.
3001 <td><p><a name="G-BUS-TYPE-SYSTEM:CAPS"></a><span class="term"><code class="literal">G_BUS_TYPE_SYSTEM</code></span></p></td>
3002 <td>The system-wide message bus.
3006 <td><p><a name="G-BUS-TYPE-SESSION:CAPS"></a><span class="term"><code class="literal">G_BUS_TYPE_SESSION</code></span></p></td>
3007 <td>The login session message bus.
3012 <p class="since">Since 2.26</p>
3015 <div class="refsect2">
3016 <a name="g-bus-get"></a><h3>g_bus_get ()</h3>
3017 <pre class="programlisting"><span class="returnvalue">void</span> g_bus_get (<em class="parameter"><code><a class="link" href="GDBusConnection.html#GBusType" title="enum GBusType"><span class="type">GBusType</span></a> bus_type</code></em>,
3018 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3019 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
3020 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
3022 Asynchronously connects to the message bus specified by <em class="parameter"><code>bus_type</code></em>.
3025 When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked. You can
3026 then call <a class="link" href="GDBusConnection.html#g-bus-get-finish" title="g_bus_get_finish ()"><code class="function">g_bus_get_finish()</code></a> to get the result of the operation.
3029 This is a asynchronous failable function. See <a class="link" href="GDBusConnection.html#g-bus-get-sync" title="g_bus_get_sync ()"><code class="function">g_bus_get_sync()</code></a> for
3030 the synchronous version.
3032 <div class="variablelist"><table border="0">
3033 <col align="left" valign="top">
3036 <td><p><span class="term"><em class="parameter"><code>bus_type</code></em> :</span></p></td>
3037 <td>A <a class="link" href="GDBusConnection.html#GBusType" title="enum GBusType"><span class="type">GBusType</span></a>.</td>
3040 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3041 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3045 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
3046 <td>A <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied.</td>
3049 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
3050 <td>The data to pass to <em class="parameter"><code>callback</code></em>.</td>
3054 <p class="since">Since 2.26</p>
3057 <div class="refsect2">
3058 <a name="g-bus-get-finish"></a><h3>g_bus_get_finish ()</h3>
3059 <pre class="programlisting"><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * g_bus_get_finish (<em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
3060 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3062 Finishes an operation started with <a class="link" href="GDBusConnection.html#g-bus-get" title="g_bus_get ()"><code class="function">g_bus_get()</code></a>.
3065 The returned object is a singleton, that is, shared with other
3066 callers of <a class="link" href="GDBusConnection.html#g-bus-get" title="g_bus_get ()"><code class="function">g_bus_get()</code></a> and <a class="link" href="GDBusConnection.html#g-bus-get-sync" title="g_bus_get_sync ()"><code class="function">g_bus_get_sync()</code></a> for <em class="parameter"><code>bus_type</code></em>. In the
3067 event that you need a private message bus connection, use
3068 <a class="link" href="gio-D-Bus-Addresses.html#g-dbus-address-get-for-bus-sync" title="g_dbus_address_get_for_bus_sync ()"><code class="function">g_dbus_address_get_for_bus_sync()</code></a> and
3069 <a class="link" href="GDBusConnection.html#g-dbus-connection-new-for-address" title="g_dbus_connection_new_for_address ()"><code class="function">g_dbus_connection_new_for_address()</code></a>.
3072 Note that the returned <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> object will (usually) have
3073 the <a class="link" href="GDBusConnection.html#GDBusConnection--exit-on-close" title='The "exit-on-close" property'><span class="type">"exit-on-close"</span></a> property set to <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.
3075 <div class="variablelist"><table border="0">
3076 <col align="left" valign="top">
3079 <td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
3080 <td>A <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> obtained from the <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="GDBusConnection.html#g-bus-get" title="g_bus_get ()"><code class="function">g_bus_get()</code></a>.</td>
3083 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3084 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3087 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3088 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Free with <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
3093 <p class="since">Since 2.26</p>
3096 <div class="refsect2">
3097 <a name="g-bus-get-sync"></a><h3>g_bus_get_sync ()</h3>
3098 <pre class="programlisting"><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * g_bus_get_sync (<em class="parameter"><code><a class="link" href="GDBusConnection.html#GBusType" title="enum GBusType"><span class="type">GBusType</span></a> bus_type</code></em>,
3099 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3100 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3102 Synchronously connects to the message bus specified by <em class="parameter"><code>bus_type</code></em>.
3103 Note that the returned object may shared with other callers,
3104 e.g. if two separate parts of a process calls this function with
3105 the same <em class="parameter"><code>bus_type</code></em>, they will share the same object.
3108 This is a synchronous failable function. See <a class="link" href="GDBusConnection.html#g-bus-get" title="g_bus_get ()"><code class="function">g_bus_get()</code></a> and
3109 <a class="link" href="GDBusConnection.html#g-bus-get-finish" title="g_bus_get_finish ()"><code class="function">g_bus_get_finish()</code></a> for the asynchronous version.
3112 The returned object is a singleton, that is, shared with other
3113 callers of <a class="link" href="GDBusConnection.html#g-bus-get" title="g_bus_get ()"><code class="function">g_bus_get()</code></a> and <a class="link" href="GDBusConnection.html#g-bus-get-sync" title="g_bus_get_sync ()"><code class="function">g_bus_get_sync()</code></a> for <em class="parameter"><code>bus_type</code></em>. In the
3114 event that you need a private message bus connection, use
3115 <a class="link" href="gio-D-Bus-Addresses.html#g-dbus-address-get-for-bus-sync" title="g_dbus_address_get_for_bus_sync ()"><code class="function">g_dbus_address_get_for_bus_sync()</code></a> and
3116 <a class="link" href="GDBusConnection.html#g-dbus-connection-new-for-address" title="g_dbus_connection_new_for_address ()"><code class="function">g_dbus_connection_new_for_address()</code></a>.
3119 Note that the returned <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> object will (usually) have
3120 the <a class="link" href="GDBusConnection.html#GDBusConnection--exit-on-close" title='The "exit-on-close" property'><span class="type">"exit-on-close"</span></a> property set to <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.
3122 <div class="variablelist"><table border="0">
3123 <col align="left" valign="top">
3126 <td><p><span class="term"><em class="parameter"><code>bus_type</code></em> :</span></p></td>
3127 <td>A <a class="link" href="GDBusConnection.html#GBusType" title="enum GBusType"><span class="type">GBusType</span></a>.</td>
3130 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3131 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3135 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3136 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3139 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3140 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Free with <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
3145 <p class="since">Since 2.26</p>
3148 <div class="refsect2">
3149 <a name="GDBusConnection-struct"></a><h3>GDBusConnection</h3>
3150 <pre class="programlisting">typedef struct _GDBusConnection GDBusConnection;</pre>
3152 The <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> structure contains only private data and
3153 should only be accessed using the provided API.
3155 <p class="since">Since 2.26</p>
3158 <div class="refsect2">
3159 <a name="GDBusConnectionFlags"></a><h3>enum GDBusConnectionFlags</h3>
3160 <pre class="programlisting">typedef enum {
3161 G_DBUS_CONNECTION_FLAGS_NONE = 0,
3162 G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT = (1<<0),
3163 G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER = (1<<1),
3164 G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<2),
3165 G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION = (1<<3),
3166 G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING = (1<<4)
3167 } GDBusConnectionFlags;
3170 Flags used when creating a new <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.
3172 <div class="variablelist"><table border="0">
3173 <col align="left" valign="top">
3176 <td><p><a name="G-DBUS-CONNECTION-FLAGS-NONE:CAPS"></a><span class="term"><code class="literal">G_DBUS_CONNECTION_FLAGS_NONE</code></span></p></td>
3181 <td><p><a name="G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-CLIENT:CAPS"></a><span class="term"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT</code></span></p></td>
3182 <td>Perform authentication against server.
3186 <td><p><a name="G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-SERVER:CAPS"></a><span class="term"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER</code></span></p></td>
3187 <td>Perform authentication against client.
3191 <td><p><a name="G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-ALLOW-ANONYMOUS:CAPS"></a><span class="term"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS</code></span></p></td>
3193 authenticating as a server, allow the anonymous authentication
3198 <td><p><a name="G-DBUS-CONNECTION-FLAGS-MESSAGE-BUS-CONNECTION:CAPS"></a><span class="term"><code class="literal">G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION</code></span></p></td>
3199 <td>Pass this flag if connecting to a peer that is a
3200 message bus. This means that the <code class="function">Hello()</code> method will be invoked as part of the connection setup.
3204 <td><p><a name="G-DBUS-CONNECTION-FLAGS-DELAY-MESSAGE-PROCESSING:CAPS"></a><span class="term"><code class="literal">G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING</code></span></p></td>
3205 <td>If set, processing of D-Bus messages is
3206 delayed until <a class="link" href="GDBusConnection.html#g-dbus-connection-start-message-processing" title="g_dbus_connection_start_message_processing ()"><code class="function">g_dbus_connection_start_message_processing()</code></a> is called.
3211 <p class="since">Since 2.26</p>
3214 <div class="refsect2">
3215 <a name="g-dbus-connection-new"></a><h3>g_dbus_connection_new ()</h3>
3216 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_new (<em class="parameter"><code><a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a> *stream</code></em>,
3217 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *guid</code></em>,
3218 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> flags</code></em>,
3219 <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
3220 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3221 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
3222 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
3224 Asynchronously sets up a D-Bus connection for exchanging D-Bus messages
3225 with the end represented by <em class="parameter"><code>stream</code></em>.
3228 If <em class="parameter"><code>stream</code></em> is a <a class="link" href="GSocketConnection.html" title="GSocketConnection"><span class="type">GSocketConnection</span></a>, then the corresponding <a class="link" href="GSocket.html" title="GSocket"><span class="type">GSocket</span></a>
3229 will be put into non-blocking mode.
3232 The D-Bus connection will interact with <em class="parameter"><code>stream</code></em> from a worker thread.
3233 As a result, the caller should not interact with <em class="parameter"><code>stream</code></em> after this
3234 method has been called, except by calling <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a> on it.
3237 If <em class="parameter"><code>observer</code></em> is not <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> it may be used to control the
3238 authentication process.
3241 When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked. You can
3242 then call <a class="link" href="GDBusConnection.html#g-dbus-connection-new-finish" title="g_dbus_connection_new_finish ()"><code class="function">g_dbus_connection_new_finish()</code></a> to get the result of the
3246 This is a asynchronous failable constructor. See
3247 <a class="link" href="GDBusConnection.html#g-dbus-connection-new-sync" title="g_dbus_connection_new_sync ()"><code class="function">g_dbus_connection_new_sync()</code></a> for the synchronous
3250 <div class="variablelist"><table border="0">
3251 <col align="left" valign="top">
3254 <td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
3255 <td>A <a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a>.</td>
3258 <td><p><span class="term"><em class="parameter"><code>guid</code></em> :</span></p></td>
3259 <td>The GUID to use if a authenticating as a server or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3263 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
3264 <td>Flags describing how to make the connection.</td>
3267 <td><p><span class="term"><em class="parameter"><code>observer</code></em> :</span></p></td>
3268 <td>A <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3272 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3273 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3277 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
3278 <td>A <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied.</td>
3281 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
3282 <td>The data to pass to <em class="parameter"><code>callback</code></em>.</td>
3286 <p class="since">Since 2.26</p>
3289 <div class="refsect2">
3290 <a name="g-dbus-connection-new-finish"></a><h3>g_dbus_connection_new_finish ()</h3>
3291 <pre class="programlisting"><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * g_dbus_connection_new_finish (<em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
3292 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3294 Finishes an operation started with <a class="link" href="GDBusConnection.html#g-dbus-connection-new" title="g_dbus_connection_new ()"><code class="function">g_dbus_connection_new()</code></a>.
3296 <div class="variablelist"><table border="0">
3297 <col align="left" valign="top">
3300 <td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
3301 <td>A <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> obtained from the <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-new" title="g_dbus_connection_new ()"><code class="function">g_dbus_connection_new()</code></a>.</td>
3304 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3305 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3308 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3309 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Free with <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
3313 <p class="since">Since 2.26</p>
3316 <div class="refsect2">
3317 <a name="g-dbus-connection-new-sync"></a><h3>g_dbus_connection_new_sync ()</h3>
3318 <pre class="programlisting"><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * g_dbus_connection_new_sync (<em class="parameter"><code><a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a> *stream</code></em>,
3319 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *guid</code></em>,
3320 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> flags</code></em>,
3321 <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
3322 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3323 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3325 Synchronously sets up a D-Bus connection for exchanging D-Bus messages
3326 with the end represented by <em class="parameter"><code>stream</code></em>.
3329 If <em class="parameter"><code>stream</code></em> is a <a class="link" href="GSocketConnection.html" title="GSocketConnection"><span class="type">GSocketConnection</span></a>, then the corresponding <a class="link" href="GSocket.html" title="GSocket"><span class="type">GSocket</span></a>
3330 will be put into non-blocking mode.
3333 The D-Bus connection will interact with <em class="parameter"><code>stream</code></em> from a worker thread.
3334 As a result, the caller should not interact with <em class="parameter"><code>stream</code></em> after this
3335 method has been called, except by calling <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a> on it.
3338 If <em class="parameter"><code>observer</code></em> is not <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> it may be used to control the
3339 authentication process.
3342 This is a synchronous failable constructor. See
3343 <a class="link" href="GDBusConnection.html#g-dbus-connection-new" title="g_dbus_connection_new ()"><code class="function">g_dbus_connection_new()</code></a> for the asynchronous version.
3345 <div class="variablelist"><table border="0">
3346 <col align="left" valign="top">
3349 <td><p><span class="term"><em class="parameter"><code>stream</code></em> :</span></p></td>
3350 <td>A <a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a>.</td>
3353 <td><p><span class="term"><em class="parameter"><code>guid</code></em> :</span></p></td>
3354 <td>The GUID to use if a authenticating as a server or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3358 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
3359 <td>Flags describing how to make the connection.</td>
3362 <td><p><span class="term"><em class="parameter"><code>observer</code></em> :</span></p></td>
3363 <td>A <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3367 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3368 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3372 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3373 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3376 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3377 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Free with <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
3381 <p class="since">Since 2.26</p>
3384 <div class="refsect2">
3385 <a name="g-dbus-connection-new-for-address"></a><h3>g_dbus_connection_new_for_address ()</h3>
3386 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_new_for_address (<em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *address</code></em>,
3387 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> flags</code></em>,
3388 <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
3389 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3390 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
3391 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
3393 Asynchronously connects and sets up a D-Bus client connection for
3394 exchanging D-Bus messages with an endpoint specified by <em class="parameter"><code>address</code></em>
3395 which must be in the D-Bus address format.
3398 This constructor can only be used to initiate client-side
3399 connections - use <a class="link" href="GDBusConnection.html#g-dbus-connection-new" title="g_dbus_connection_new ()"><code class="function">g_dbus_connection_new()</code></a> if you need to act as the
3400 server. In particular, <em class="parameter"><code>flags</code></em> cannot contain the
3401 <a class="link" href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-SERVER:CAPS"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER</code></a> or
3402 <a class="link" href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-ALLOW-ANONYMOUS:CAPS"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS</code></a> flags.
3405 When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked. You can
3406 then call <a class="link" href="GDBusConnection.html#g-dbus-connection-new-finish" title="g_dbus_connection_new_finish ()"><code class="function">g_dbus_connection_new_finish()</code></a> to get the result of the
3410 If <em class="parameter"><code>observer</code></em> is not <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> it may be used to control the
3411 authentication process.
3414 This is a asynchronous failable constructor. See
3415 <a class="link" href="GDBusConnection.html#g-dbus-connection-new-for-address-sync" title="g_dbus_connection_new_for_address_sync ()"><code class="function">g_dbus_connection_new_for_address_sync()</code></a> for the synchronous
3418 <div class="variablelist"><table border="0">
3419 <col align="left" valign="top">
3422 <td><p><span class="term"><em class="parameter"><code>address</code></em> :</span></p></td>
3423 <td>A D-Bus address.</td>
3426 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
3427 <td>Flags describing how to make the connection.</td>
3430 <td><p><span class="term"><em class="parameter"><code>observer</code></em> :</span></p></td>
3431 <td>A <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3435 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3436 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3440 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
3441 <td>A <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the request is satisfied.</td>
3444 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
3445 <td>The data to pass to <em class="parameter"><code>callback</code></em>.</td>
3449 <p class="since">Since 2.26</p>
3452 <div class="refsect2">
3453 <a name="g-dbus-connection-new-for-address-finish"></a><h3>g_dbus_connection_new_for_address_finish ()</h3>
3454 <pre class="programlisting"><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * g_dbus_connection_new_for_address_finish
3455 (<em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
3456 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3458 Finishes an operation started with <a class="link" href="GDBusConnection.html#g-dbus-connection-new-for-address" title="g_dbus_connection_new_for_address ()"><code class="function">g_dbus_connection_new_for_address()</code></a>.
3460 <div class="variablelist"><table border="0">
3461 <col align="left" valign="top">
3464 <td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
3465 <td>A <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> obtained from the <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-new" title="g_dbus_connection_new ()"><code class="function">g_dbus_connection_new()</code></a>.</td>
3468 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3469 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3472 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3473 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Free with <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
3477 <p class="since">Since 2.26</p>
3480 <div class="refsect2">
3481 <a name="g-dbus-connection-new-for-address-sync"></a><h3>g_dbus_connection_new_for_address_sync ()</h3>
3482 <pre class="programlisting"><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="returnvalue">GDBusConnection</span></a> * g_dbus_connection_new_for_address_sync
3483 (<em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *address</code></em>,
3484 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> flags</code></em>,
3485 <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
3486 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3487 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3489 Synchronously connects and sets up a D-Bus client connection for
3490 exchanging D-Bus messages with an endpoint specified by <em class="parameter"><code>address</code></em>
3491 which must be in the D-Bus address format.
3494 This constructor can only be used to initiate client-side
3495 connections - use <a class="link" href="GDBusConnection.html#g-dbus-connection-new-sync" title="g_dbus_connection_new_sync ()"><code class="function">g_dbus_connection_new_sync()</code></a> if you need to act
3496 as the server. In particular, <em class="parameter"><code>flags</code></em> cannot contain the
3497 <a class="link" href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-SERVER:CAPS"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER</code></a> or
3498 <a class="link" href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-ALLOW-ANONYMOUS:CAPS"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS</code></a> flags.
3501 This is a synchronous failable constructor. See
3502 <a class="link" href="GDBusConnection.html#g-dbus-connection-new-for-address" title="g_dbus_connection_new_for_address ()"><code class="function">g_dbus_connection_new_for_address()</code></a> for the asynchronous version.
3505 If <em class="parameter"><code>observer</code></em> is not <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> it may be used to control the
3506 authentication process.
3508 <div class="variablelist"><table border="0">
3509 <col align="left" valign="top">
3512 <td><p><span class="term"><em class="parameter"><code>address</code></em> :</span></p></td>
3513 <td>A D-Bus address.</td>
3516 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
3517 <td>Flags describing how to make the connection.</td>
3520 <td><p><span class="term"><em class="parameter"><code>observer</code></em> :</span></p></td>
3521 <td>A <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3525 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3526 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3530 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3531 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3534 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3535 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Free with <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
3539 <p class="since">Since 2.26</p>
3542 <div class="refsect2">
3543 <a name="g-dbus-connection-start-message-processing"></a><h3>g_dbus_connection_start_message_processing ()</h3>
3544 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_start_message_processing
3545 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);</pre>
3547 If <em class="parameter"><code>connection</code></em> was created with
3548 <a class="link" href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-DELAY-MESSAGE-PROCESSING:CAPS"><code class="literal">G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING</code></a>, this method
3549 starts processing messages. Does nothing on if <em class="parameter"><code>connection</code></em> wasn't
3550 created with this flag or if the method has already been called.
3552 <div class="variablelist"><table border="0">
3553 <col align="left" valign="top">
3555 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3556 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3559 <p class="since">Since 2.26</p>
3562 <div class="refsect2">
3563 <a name="g-dbus-connection-close"></a><h3>g_dbus_connection_close ()</h3>
3564 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_close (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
3565 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3566 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
3567 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
3569 Closes <em class="parameter"><code>connection</code></em>. Note that this never causes the process to
3570 exit (this might only happen if the other end of a shared message
3571 bus connection disconnects, see <a class="link" href="GDBusConnection.html#GDBusConnection--exit-on-close" title='The "exit-on-close" property'><span class="type">"exit-on-close"</span></a>).
3574 Once the connection is closed, operations such as sending a message
3575 will return with the error <a class="link" href="gio-GIOError.html#G-IO-ERROR-CLOSED:CAPS"><code class="literal">G_IO_ERROR_CLOSED</code></a>. Closing a connection
3576 will not automatically flush the connection so queued messages may
3577 be lost. Use <a class="link" href="GDBusConnection.html#g-dbus-connection-flush" title="g_dbus_connection_flush ()"><code class="function">g_dbus_connection_flush()</code></a> if you need such guarantees.
3580 If <em class="parameter"><code>connection</code></em> is already closed, this method fails with
3581 <a class="link" href="gio-GIOError.html#G-IO-ERROR-CLOSED:CAPS"><code class="literal">G_IO_ERROR_CLOSED</code></a>.
3584 When <em class="parameter"><code>connection</code></em> has been closed, the <a class="link" href="GDBusConnection.html#GDBusConnection-closed" title='The "closed" signal'><span class="type">"closed"</span></a>
3585 signal is emitted in the <GTKDOCLINK HREF="g-main-context-push-thread-default">thread-default main
3586 loop</GTKDOCLINK> of the thread that <em class="parameter"><code>connection</code></em> was constructed in.
3589 This is an asynchronous method. When the operation is finished,
3590 <em class="parameter"><code>callback</code></em> will be invoked in the <GTKDOCLINK HREF="g-main-context-push-thread-default">thread-default main
3591 loop</GTKDOCLINK> of the thread you are calling this method from. You can
3592 then call <a class="link" href="GDBusConnection.html#g-dbus-connection-close-finish" title="g_dbus_connection_close_finish ()"><code class="function">g_dbus_connection_close_finish()</code></a> to get the result of the
3593 operation. See <a class="link" href="GDBusConnection.html#g-dbus-connection-close-sync" title="g_dbus_connection_close_sync ()"><code class="function">g_dbus_connection_close_sync()</code></a> for the synchronous
3596 <div class="variablelist"><table border="0">
3597 <col align="left" valign="top">
3600 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3601 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3604 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3605 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3609 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
3610 <td>A <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the request is
3611 satisfied or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if you don't care about the result. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3615 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
3616 <td>The data to pass to <em class="parameter"><code>callback</code></em>.</td>
3620 <p class="since">Since 2.26</p>
3623 <div class="refsect2">
3624 <a name="g-dbus-connection-close-finish"></a><h3>g_dbus_connection_close_finish ()</h3>
3625 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_close_finish (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
3626 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
3627 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3629 Finishes an operation started with <a class="link" href="GDBusConnection.html#g-dbus-connection-close" title="g_dbus_connection_close ()"><code class="function">g_dbus_connection_close()</code></a>.
3631 <div class="variablelist"><table border="0">
3632 <col align="left" valign="top">
3635 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3636 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3639 <td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
3640 <td>A <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> obtained from the <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-close" title="g_dbus_connection_close ()"><code class="function">g_dbus_connection_close()</code></a>.</td>
3643 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3644 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3647 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3649 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation succeeded, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set.</td>
3653 <p class="since">Since 2.26</p>
3656 <div class="refsect2">
3657 <a name="g-dbus-connection-close-sync"></a><h3>g_dbus_connection_close_sync ()</h3>
3658 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_close_sync (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
3659 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3660 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3662 Synchronously closees <em class="parameter"><code>connection</code></em>. The calling thread is blocked
3663 until this is done. See <a class="link" href="GDBusConnection.html#g-dbus-connection-close" title="g_dbus_connection_close ()"><code class="function">g_dbus_connection_close()</code></a> for the
3664 asynchronous version of this method and more details about what it
3667 <div class="variablelist"><table border="0">
3668 <col align="left" valign="top">
3671 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3672 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3675 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3676 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3680 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3681 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3684 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3686 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation succeeded, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set.</td>
3690 <p class="since">Since 2.26</p>
3693 <div class="refsect2">
3694 <a name="g-dbus-connection-is-closed"></a><h3>g_dbus_connection_is_closed ()</h3>
3695 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_is_closed (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);</pre>
3697 Gets whether <em class="parameter"><code>connection</code></em> is closed.
3699 <div class="variablelist"><table border="0">
3700 <col align="left" valign="top">
3703 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3704 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3707 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3709 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the connection is closed, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</td>
3713 <p class="since">Since 2.26</p>
3716 <div class="refsect2">
3717 <a name="g-dbus-connection-flush"></a><h3>g_dbus_connection_flush ()</h3>
3718 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_flush (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
3719 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3720 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
3721 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
3723 Asynchronously flushes <em class="parameter"><code>connection</code></em>, that is, writes all queued
3724 outgoing message to the transport and then flushes the transport
3725 (using <a class="link" href="GOutputStream.html#g-output-stream-flush-async" title="g_output_stream_flush_async ()"><code class="function">g_output_stream_flush_async()</code></a>). This is useful in programs
3726 that wants to emit a D-Bus signal and then exit
3727 immediately. Without flushing the connection, there is no guarantee
3728 that the message has been sent to the networking buffers in the OS
3732 This is an asynchronous method. When the operation is finished,
3733 <em class="parameter"><code>callback</code></em> will be invoked in the <GTKDOCLINK HREF="g-main-context-push-thread-default">thread-default main
3734 loop</GTKDOCLINK> of the thread you are calling this method from. You can
3735 then call <a class="link" href="GDBusConnection.html#g-dbus-connection-flush-finish" title="g_dbus_connection_flush_finish ()"><code class="function">g_dbus_connection_flush_finish()</code></a> to get the result of the
3736 operation. See <a class="link" href="GDBusConnection.html#g-dbus-connection-flush-sync" title="g_dbus_connection_flush_sync ()"><code class="function">g_dbus_connection_flush_sync()</code></a> for the synchronous
3739 <div class="variablelist"><table border="0">
3740 <col align="left" valign="top">
3743 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3744 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3747 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3748 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3752 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
3753 <td>A <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the request is
3754 satisfied or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if you don't care about the result. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3758 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
3759 <td>The data to pass to <em class="parameter"><code>callback</code></em>.</td>
3763 <p class="since">Since 2.26</p>
3766 <div class="refsect2">
3767 <a name="g-dbus-connection-flush-finish"></a><h3>g_dbus_connection_flush_finish ()</h3>
3768 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_flush_finish (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
3769 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
3770 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3772 Finishes an operation started with <a class="link" href="GDBusConnection.html#g-dbus-connection-flush" title="g_dbus_connection_flush ()"><code class="function">g_dbus_connection_flush()</code></a>.
3774 <div class="variablelist"><table border="0">
3775 <col align="left" valign="top">
3778 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3779 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3782 <td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
3783 <td>A <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> obtained from the <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-flush" title="g_dbus_connection_flush ()"><code class="function">g_dbus_connection_flush()</code></a>.</td>
3786 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3787 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3790 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3792 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation succeeded, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set.</td>
3796 <p class="since">Since 2.26</p>
3799 <div class="refsect2">
3800 <a name="g-dbus-connection-flush-sync"></a><h3>g_dbus_connection_flush_sync ()</h3>
3801 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_flush_sync (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
3802 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
3803 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
3805 Synchronously flushes <em class="parameter"><code>connection</code></em>. The calling thread is blocked
3806 until this is done. See <a class="link" href="GDBusConnection.html#g-dbus-connection-flush" title="g_dbus_connection_flush ()"><code class="function">g_dbus_connection_flush()</code></a> for the
3807 asynchronous version of this method and more details about what it
3810 <div class="variablelist"><table border="0">
3811 <col align="left" valign="top">
3814 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3815 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3818 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
3819 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
3823 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
3824 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
3827 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3829 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation succeeded, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set.</td>
3833 <p class="since">Since 2.26</p>
3836 <div class="refsect2">
3837 <a name="g-dbus-connection-get-exit-on-close"></a><h3>g_dbus_connection_get_exit_on_close ()</h3>
3838 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_get_exit_on_close (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);</pre>
3840 Gets whether the process is terminated when <em class="parameter"><code>connection</code></em> is
3841 closed by the remote peer. See
3842 <a class="link" href="GDBusConnection.html#GDBusConnection--exit-on-close" title='The "exit-on-close" property'><span class="type">"exit-on-close"</span></a> for more details.
3844 <div class="variablelist"><table border="0">
3845 <col align="left" valign="top">
3848 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3849 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3852 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3853 <td>Whether the process is terminated when <em class="parameter"><code>connection</code></em> is
3854 closed by the remote peer.</td>
3858 <p class="since">Since 2.26</p>
3861 <div class="refsect2">
3862 <a name="g-dbus-connection-set-exit-on-close"></a><h3>g_dbus_connection_set_exit_on_close ()</h3>
3863 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_set_exit_on_close (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
3864 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> exit_on_close</code></em>);</pre>
3866 Sets whether the process should be terminated when <em class="parameter"><code>connection</code></em> is
3867 closed by the remote peer. See <a class="link" href="GDBusConnection.html#GDBusConnection--exit-on-close" title='The "exit-on-close" property'><span class="type">"exit-on-close"</span></a> for
3871 Note that this function should be used with care. Most modern UNIX
3872 desktops tie the notion of a user session the session bus, and expect
3873 all of a users applications to quit when their bus connection goes away.
3874 If you are setting <em class="parameter"><code>exit_on_close</code></em> to <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> for the shared session
3875 bus connection, you should make sure that your application exits
3876 when the user session ends.
3878 <div class="variablelist"><table border="0">
3879 <col align="left" valign="top">
3882 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3883 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3886 <td><p><span class="term"><em class="parameter"><code>exit_on_close</code></em> :</span></p></td>
3887 <td>Whether the process should be terminated
3888 when <em class="parameter"><code>connection</code></em> is closed by the remote peer.</td>
3892 <p class="since">Since 2.26</p>
3895 <div class="refsect2">
3896 <a name="g-dbus-connection-get-stream"></a><h3>g_dbus_connection_get_stream ()</h3>
3897 <pre class="programlisting"><a class="link" href="GIOStream.html" title="GIOStream"><span class="returnvalue">GIOStream</span></a> * g_dbus_connection_get_stream (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);</pre>
3899 Gets the underlying stream used for IO.
3902 While the <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> is active, it will interact with this
3903 stream from a worker thread, so it is not safe to interact with
3904 the stream directly.
3906 <div class="variablelist"><table border="0">
3907 <col align="left" valign="top">
3910 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3911 <td>a <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>
3915 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3916 <td>the stream used for IO. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
3921 <p class="since">Since 2.26</p>
3924 <div class="refsect2">
3925 <a name="g-dbus-connection-get-guid"></a><h3>g_dbus_connection_get_guid ()</h3>
3926 <pre class="programlisting">const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * g_dbus_connection_get_guid (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);</pre>
3928 The GUID of the peer performing the role of server when
3929 authenticating. See <a class="link" href="GDBusConnection.html#GDBusConnection--guid" title='The "guid" property'><span class="type">"guid"</span></a> for more details.
3931 <div class="variablelist"><table border="0">
3932 <col align="left" valign="top">
3935 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3936 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3939 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3940 <td>The GUID. Do not free this string, it is owned by
3941 <em class="parameter"><code>connection</code></em>.</td>
3945 <p class="since">Since 2.26</p>
3948 <div class="refsect2">
3949 <a name="g-dbus-connection-get-unique-name"></a><h3>g_dbus_connection_get_unique_name ()</h3>
3950 <pre class="programlisting">const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * g_dbus_connection_get_unique_name (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);</pre>
3952 Gets the unique name of <em class="parameter"><code>connection</code></em> as assigned by the message
3953 bus. This can also be used to figure out if <em class="parameter"><code>connection</code></em> is a
3954 message bus connection.
3956 <div class="variablelist"><table border="0">
3957 <col align="left" valign="top">
3960 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
3961 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
3964 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3965 <td>The unique name or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>connection</code></em> is not a message
3966 bus connection. Do not free this string, it is owned by
3967 <em class="parameter"><code>connection</code></em>.</td>
3971 <p class="since">Since 2.26</p>
3974 <div class="refsect2">
3975 <a name="GDBusCapabilityFlags"></a><h3>enum GDBusCapabilityFlags</h3>
3976 <pre class="programlisting">typedef enum {
3977 G_DBUS_CAPABILITY_FLAGS_NONE = 0,
3978 G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING = (1<<0)
3979 } GDBusCapabilityFlags;
3982 Capabilities negotiated with the remote peer.
3984 <div class="variablelist"><table border="0">
3985 <col align="left" valign="top">
3988 <td><p><a name="G-DBUS-CAPABILITY-FLAGS-NONE:CAPS"></a><span class="term"><code class="literal">G_DBUS_CAPABILITY_FLAGS_NONE</code></span></p></td>
3993 <td><p><a name="G-DBUS-CAPABILITY-FLAGS-UNIX-FD-PASSING:CAPS"></a><span class="term"><code class="literal">G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING</code></span></p></td>
3995 supports exchanging UNIX file descriptors with the remote peer.
4000 <p class="since">Since 2.26</p>
4003 <div class="refsect2">
4004 <a name="g-dbus-connection-get-capabilities"></a><h3>g_dbus_connection_get_capabilities ()</h3>
4005 <pre class="programlisting"><a class="link" href="GDBusConnection.html#GDBusCapabilityFlags" title="enum GDBusCapabilityFlags"><span class="returnvalue">GDBusCapabilityFlags</span></a> g_dbus_connection_get_capabilities (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);</pre>
4007 Gets the capabilities negotiated with the remote peer
4009 <div class="variablelist"><table border="0">
4010 <col align="left" valign="top">
4013 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4014 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4017 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4018 <td>Zero or more flags from the <a class="link" href="GDBusConnection.html#GDBusCapabilityFlags" title="enum GDBusCapabilityFlags"><span class="type">GDBusCapabilityFlags</span></a> enumeration.</td>
4022 <p class="since">Since 2.26</p>
4025 <div class="refsect2">
4026 <a name="g-dbus-connection-get-peer-credentials"></a><h3>g_dbus_connection_get_peer_credentials ()</h3>
4027 <pre class="programlisting"><a class="link" href="GCredentials.html" title="GCredentials"><span class="returnvalue">GCredentials</span></a> * g_dbus_connection_get_peer_credentials
4028 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>);</pre>
4030 Gets the credentials of the authenticated peer. This will always
4031 return <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> unless <em class="parameter"><code>connection</code></em> acted as a server
4032 (e.g. <a class="link" href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-SERVER:CAPS"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER</code></a> was passed)
4033 when set up and the client passed credentials as part of the
4034 authentication process.
4037 In a message bus setup, the message bus is always the server and
4038 each application is a client. So this method will always return
4039 <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> for message bus clients.
4041 <div class="variablelist"><table border="0">
4042 <col align="left" valign="top">
4045 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4046 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4049 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4050 <td>A <a class="link" href="GCredentials.html" title="GCredentials"><span class="type">GCredentials</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not available. Do not free
4051 this object, it is owned by <em class="parameter"><code>connection</code></em>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
4056 <p class="since">Since 2.26</p>
4059 <div class="refsect2">
4060 <a name="GDBusCallFlags"></a><h3>enum GDBusCallFlags</h3>
4061 <pre class="programlisting">typedef enum {
4062 G_DBUS_CALL_FLAGS_NONE = 0,
4063 G_DBUS_CALL_FLAGS_NO_AUTO_START = (1<<0)
4067 Flags used in <a class="link" href="GDBusConnection.html#g-dbus-connection-call" title="g_dbus_connection_call ()"><code class="function">g_dbus_connection_call()</code></a> and similar APIs.
4069 <div class="variablelist"><table border="0">
4070 <col align="left" valign="top">
4073 <td><p><a name="G-DBUS-CALL-FLAGS-NONE:CAPS"></a><span class="term"><code class="literal">G_DBUS_CALL_FLAGS_NONE</code></span></p></td>
4078 <td><p><a name="G-DBUS-CALL-FLAGS-NO-AUTO-START:CAPS"></a><span class="term"><code class="literal">G_DBUS_CALL_FLAGS_NO_AUTO_START</code></span></p></td>
4079 <td>The bus must not launch
4080 an owner for the destination name in response to this method
4086 <p class="since">Since 2.26</p>
4089 <div class="refsect2">
4090 <a name="g-dbus-connection-call"></a><h3>g_dbus_connection_call ()</h3>
4091 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_call (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4092 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *bus_name</code></em>,
4093 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
4094 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
4095 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
4096 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
4097 <em class="parameter"><code>const <a href="./../glib/glib/glib-GVariantType.html#GVariantType"><span class="type">GVariantType</span></a> *reply_type</code></em>,
4098 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> flags</code></em>,
4099 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
4100 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
4101 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
4102 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
4104 Asynchronously invokes the <em class="parameter"><code>method_name</code></em> method on the
4105 <em class="parameter"><code>interface_name</code></em> D-Bus interface on the remote object at
4106 <em class="parameter"><code>object_path</code></em> owned by <em class="parameter"><code>bus_name</code></em>.
4109 If <em class="parameter"><code>connection</code></em> is closed then the operation will fail with
4110 <a class="link" href="gio-GIOError.html#G-IO-ERROR-CLOSED:CAPS"><code class="literal">G_IO_ERROR_CLOSED</code></a>. If <em class="parameter"><code>cancellable</code></em> is canceled, the operation will
4111 fail with <a class="link" href="gio-GIOError.html#G-IO-ERROR-CANCELLED:CAPS"><code class="literal">G_IO_ERROR_CANCELLED</code></a>. If <em class="parameter"><code>parameters</code></em> contains a value
4112 not compatible with the D-Bus protocol, the operation fails with
4113 <a class="link" href="gio-GIOError.html#G-IO-ERROR-INVALID-ARGUMENT:CAPS"><code class="literal">G_IO_ERROR_INVALID_ARGUMENT</code></a>.
4116 If <em class="parameter"><code>reply_type</code></em> is non-<a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then the reply will be checked for having this type and an
4117 error will be raised if it does not match. Said another way, if you give a <em class="parameter"><code>reply_type</code></em>
4118 then any non-<a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> return value will be of this type.
4121 If the <em class="parameter"><code>parameters</code></em> <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> is floating, it is consumed. This allows
4122 convenient 'inline' use of <a href="./../glib/glib/glib-GVariant.html#g-variant-new"><code class="function">g_variant_new()</code></a>, e.g.:
4124 <div class="informalexample">
4125 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
4128 <td class="listing_lines" align="right"><pre>1
4142 <td class="listing_code"><pre class="programlisting"><span class="function"><a href="GDBusConnection.html#g-dbus-connection-call">g_dbus_connection_call</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
4143 <span class="normal"> </span><span class="string">"org.freedesktop.StringThings"</span><span class="symbol">,</span>
4144 <span class="normal"> </span><span class="string">"/org/freedesktop/StringThings"</span><span class="symbol">,</span>
4145 <span class="normal"> </span><span class="string">"org.freedesktop.StringThings"</span><span class="symbol">,</span>
4146 <span class="normal"> </span><span class="string">"TwoStrings"</span><span class="symbol">,</span>
4147 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(ss)"</span><span class="symbol">,</span>
4148 <span class="normal"> </span><span class="string">"Thing One"</span><span class="symbol">,</span>
4149 <span class="normal"> </span><span class="string">"Thing Two"</span><span class="symbol">),</span>
4150 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
4151 <span class="normal"> <a href="GDBusConnection.html#G-DBUS-CALL-FLAGS-NONE:CAPS">G_DBUS_CALL_FLAGS_NONE</a></span><span class="symbol">,</span>
4152 <span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">,</span>
4153 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
4154 <span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GAsyncResult.html#GAsyncReadyCallback">GAsyncReadyCallback</a></span><span class="symbol">)</span><span class="normal"> two_strings_done</span><span class="symbol">,</span>
4155 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span></pre></td>
4164 This is an asynchronous method. When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked
4165 in the <a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a>
4166 of the thread you are calling this method from. You can then call
4167 <a class="link" href="GDBusConnection.html#g-dbus-connection-call-finish" title="g_dbus_connection_call_finish ()"><code class="function">g_dbus_connection_call_finish()</code></a> to get the result of the operation.
4168 See <a class="link" href="GDBusConnection.html#g-dbus-connection-call-sync" title="g_dbus_connection_call_sync ()"><code class="function">g_dbus_connection_call_sync()</code></a> for the synchronous version of this
4172 If <em class="parameter"><code>callback</code></em> is <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then the D-Bus method call message will be sent with
4173 the <a class="link" href="GDBusMessage.html#G-DBUS-MESSAGE-FLAGS-NO-REPLY-EXPECTED:CAPS"><code class="literal">G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED</code></a> flag set.
4175 <div class="variablelist"><table border="0">
4176 <col align="left" valign="top">
4179 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4180 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4183 <td><p><span class="term"><em class="parameter"><code>bus_name</code></em> :</span></p></td>
4184 <td>A unique or well-known bus name or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if
4185 <em class="parameter"><code>connection</code></em> is not a message bus connection. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4189 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4190 <td>Path of remote object.</td>
4193 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
4194 <td>D-Bus interface to invoke method on.</td>
4197 <td><p><span class="term"><em class="parameter"><code>method_name</code></em> :</span></p></td>
4198 <td>The name of the method to invoke.</td>
4201 <td><p><span class="term"><em class="parameter"><code>parameters</code></em> :</span></p></td>
4202 <td>A <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with parameters for the method
4203 or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not passing parameters. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4207 <td><p><span class="term"><em class="parameter"><code>reply_type</code></em> :</span></p></td>
4208 <td>The expected type of the reply, or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4212 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
4213 <td>Flags from the <a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> enumeration.</td>
4216 <td><p><span class="term"><em class="parameter"><code>timeout_msec</code></em> :</span></p></td>
4217 <td>The timeout in milliseconds, -1 to use the default
4218 timeout or <a href="./../glib/glib/glib-Basic-Types.html#G-MAXINT:CAPS"><code class="literal">G_MAXINT</code></a> for no timeout.</td>
4221 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
4222 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4226 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
4227 <td>A <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the request is
4228 satisfied or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if you don't care about the result of the
4229 method invocation. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4233 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
4234 <td>The data to pass to <em class="parameter"><code>callback</code></em>.</td>
4238 <p class="since">Since 2.26</p>
4241 <div class="refsect2">
4242 <a name="g-dbus-connection-call-finish"></a><h3>g_dbus_connection_call_finish ()</h3>
4243 <pre class="programlisting"><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * g_dbus_connection_call_finish (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4244 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
4245 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
4247 Finishes an operation started with <a class="link" href="GDBusConnection.html#g-dbus-connection-call" title="g_dbus_connection_call ()"><code class="function">g_dbus_connection_call()</code></a>.
4249 <div class="variablelist"><table border="0">
4250 <col align="left" valign="top">
4253 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4254 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4257 <td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
4258 <td>A <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> obtained from the <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-call" title="g_dbus_connection_call ()"><code class="function">g_dbus_connection_call()</code></a>.</td>
4261 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
4262 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
4265 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4267 <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Otherwise a <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with
4268 return values. Free with <a href="./../glib/glib/glib-GVariant.html#g-variant-unref"><code class="function">g_variant_unref()</code></a>.</td>
4272 <p class="since">Since 2.26</p>
4275 <div class="refsect2">
4276 <a name="g-dbus-connection-call-sync"></a><h3>g_dbus_connection_call_sync ()</h3>
4277 <pre class="programlisting"><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * g_dbus_connection_call_sync (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4278 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *bus_name</code></em>,
4279 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
4280 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
4281 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
4282 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
4283 <em class="parameter"><code>const <a href="./../glib/glib/glib-GVariantType.html#GVariantType"><span class="type">GVariantType</span></a> *reply_type</code></em>,
4284 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> flags</code></em>,
4285 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
4286 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
4287 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
4289 Synchronously invokes the <em class="parameter"><code>method_name</code></em> method on the
4290 <em class="parameter"><code>interface_name</code></em> D-Bus interface on the remote object at
4291 <em class="parameter"><code>object_path</code></em> owned by <em class="parameter"><code>bus_name</code></em>.
4294 If <em class="parameter"><code>connection</code></em> is closed then the operation will fail with
4295 <a class="link" href="gio-GIOError.html#G-IO-ERROR-CLOSED:CAPS"><code class="literal">G_IO_ERROR_CLOSED</code></a>. If <em class="parameter"><code>cancellable</code></em> is canceled, the
4296 operation will fail with <a class="link" href="gio-GIOError.html#G-IO-ERROR-CANCELLED:CAPS"><code class="literal">G_IO_ERROR_CANCELLED</code></a>. If <em class="parameter"><code>parameters</code></em>
4297 contains a value not compatible with the D-Bus protocol, the operation
4298 fails with <a class="link" href="gio-GIOError.html#G-IO-ERROR-INVALID-ARGUMENT:CAPS"><code class="literal">G_IO_ERROR_INVALID_ARGUMENT</code></a>.
4301 If <em class="parameter"><code>reply_type</code></em> is non-<a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> then the reply will be checked for having
4302 this type and an error will be raised if it does not match. Said
4303 another way, if you give a <em class="parameter"><code>reply_type</code></em> then any non-<a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> return
4304 value will be of this type.
4307 If the <em class="parameter"><code>parameters</code></em> <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> is floating, it is consumed.
4308 This allows convenient 'inline' use of <a href="./../glib/glib/glib-GVariant.html#g-variant-new"><code class="function">g_variant_new()</code></a>, e.g.:
4310 <div class="informalexample">
4311 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
4314 <td class="listing_lines" align="right"><pre>1
4327 <td class="listing_code"><pre class="programlisting"><span class="function"><a href="GDBusConnection.html#g-dbus-connection-call-sync">g_dbus_connection_call_sync</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span>
4328 <span class="normal"> </span><span class="string">"org.freedesktop.StringThings"</span><span class="symbol">,</span>
4329 <span class="normal"> </span><span class="string">"/org/freedesktop/StringThings"</span><span class="symbol">,</span>
4330 <span class="normal"> </span><span class="string">"org.freedesktop.StringThings"</span><span class="symbol">,</span>
4331 <span class="normal"> </span><span class="string">"TwoStrings"</span><span class="symbol">,</span>
4332 <span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(ss)"</span><span class="symbol">,</span>
4333 <span class="normal"> </span><span class="string">"Thing One"</span><span class="symbol">,</span>
4334 <span class="normal"> </span><span class="string">"Thing Two"</span><span class="symbol">),</span>
4335 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
4336 <span class="normal"> <a href="GDBusConnection.html#G-DBUS-CALL-FLAGS-NONE:CAPS">G_DBUS_CALL_FLAGS_NONE</a></span><span class="symbol">,</span>
4337 <span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">,</span>
4338 <span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
4339 <span class="normal"> </span><span class="symbol">&</span><span class="normal">error</span><span class="symbol">);</span></pre></td>
4348 The calling thread is blocked until a reply is received. See
4349 <a class="link" href="GDBusConnection.html#g-dbus-connection-call" title="g_dbus_connection_call ()"><code class="function">g_dbus_connection_call()</code></a> for the asynchronous version of
4352 <div class="variablelist"><table border="0">
4353 <col align="left" valign="top">
4356 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4357 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4360 <td><p><span class="term"><em class="parameter"><code>bus_name</code></em> :</span></p></td>
4361 <td>A unique or well-known bus name.</td>
4364 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4365 <td>Path of remote object.</td>
4368 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
4369 <td>D-Bus interface to invoke method on.</td>
4372 <td><p><span class="term"><em class="parameter"><code>method_name</code></em> :</span></p></td>
4373 <td>The name of the method to invoke.</td>
4376 <td><p><span class="term"><em class="parameter"><code>parameters</code></em> :</span></p></td>
4377 <td>A <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with parameters for the method
4378 or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not passing parameters. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4382 <td><p><span class="term"><em class="parameter"><code>reply_type</code></em> :</span></p></td>
4383 <td>The expected type of the reply, or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4387 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
4388 <td>Flags from the <a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> enumeration.</td>
4391 <td><p><span class="term"><em class="parameter"><code>timeout_msec</code></em> :</span></p></td>
4392 <td>The timeout in milliseconds, -1 to use the default
4393 timeout or <a href="./../glib/glib/glib-Basic-Types.html#G-MAXINT:CAPS"><code class="literal">G_MAXINT</code></a> for no timeout.</td>
4396 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
4397 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4401 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
4402 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
4405 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4407 <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Otherwise a <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with
4408 return values. Free with <a href="./../glib/glib/glib-GVariant.html#g-variant-unref"><code class="function">g_variant_unref()</code></a>.</td>
4412 <p class="since">Since 2.26</p>
4415 <div class="refsect2">
4416 <a name="g-dbus-connection-call-with-unix-fd-list"></a><h3>g_dbus_connection_call_with_unix_fd_list ()</h3>
4417 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_call_with_unix_fd_list
4418 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4419 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *bus_name</code></em>,
4420 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
4421 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
4422 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
4423 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
4424 <em class="parameter"><code>const <a href="./../glib/glib/glib-GVariantType.html#GVariantType"><span class="type">GVariantType</span></a> *reply_type</code></em>,
4425 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> flags</code></em>,
4426 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
4427 <em class="parameter"><code><a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> *fd_list</code></em>,
4428 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
4429 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
4430 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
4432 Like <a class="link" href="GDBusConnection.html#g-dbus-connection-call" title="g_dbus_connection_call ()"><code class="function">g_dbus_connection_call()</code></a> but also takes a <a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> object.
4435 This method is only available on UNIX.
4437 <div class="variablelist"><table border="0">
4438 <col align="left" valign="top">
4441 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4442 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4445 <td><p><span class="term"><em class="parameter"><code>bus_name</code></em> :</span></p></td>
4446 <td>A unique or well-known bus name or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if
4447 <em class="parameter"><code>connection</code></em> is not a message bus connection. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4451 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4452 <td>Path of remote object.</td>
4455 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
4456 <td>D-Bus interface to invoke method on.</td>
4459 <td><p><span class="term"><em class="parameter"><code>method_name</code></em> :</span></p></td>
4460 <td>The name of the method to invoke.</td>
4463 <td><p><span class="term"><em class="parameter"><code>parameters</code></em> :</span></p></td>
4464 <td>A <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with parameters for the method
4465 or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not passing parameters. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4469 <td><p><span class="term"><em class="parameter"><code>reply_type</code></em> :</span></p></td>
4470 <td>The expected type of the reply, or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4474 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
4475 <td>Flags from the <a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> enumeration.</td>
4478 <td><p><span class="term"><em class="parameter"><code>timeout_msec</code></em> :</span></p></td>
4479 <td>The timeout in milliseconds, -1 to use the default
4480 timeout or <a href="./../glib/glib/glib-Basic-Types.html#G-MAXINT:CAPS"><code class="literal">G_MAXINT</code></a> for no timeout.</td>
4483 <td><p><span class="term"><em class="parameter"><code>fd_list</code></em> :</span></p></td>
4484 <td>A <a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4488 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
4489 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4493 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
4494 <td>A <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the request is
4495 satisfied or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if you don't * care about the result of the
4496 method invocation. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4500 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
4501 <td>The data to pass to <em class="parameter"><code>callback</code></em>.</td>
4505 <p class="since">Since 2.30</p>
4508 <div class="refsect2">
4509 <a name="g-dbus-connection-call-with-unix-fd-list-finish"></a><h3>g_dbus_connection_call_with_unix_fd_list_finish ()</h3>
4510 <pre class="programlisting"><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * g_dbus_connection_call_with_unix_fd_list_finish
4511 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4512 <em class="parameter"><code><a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> **out_fd_list</code></em>,
4513 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
4514 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
4516 Finishes an operation started with <a class="link" href="GDBusConnection.html#g-dbus-connection-call-with-unix-fd-list" title="g_dbus_connection_call_with_unix_fd_list ()"><code class="function">g_dbus_connection_call_with_unix_fd_list()</code></a>.
4518 <div class="variablelist"><table border="0">
4519 <col align="left" valign="top">
4522 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4523 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4526 <td><p><span class="term"><em class="parameter"><code>out_fd_list</code></em> :</span></p></td>
4527 <td>Return location for a <a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4531 <td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
4532 <td>A <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> obtained from the <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-call-with-unix-fd-list" title="g_dbus_connection_call_with_unix_fd_list ()"><code class="function">g_dbus_connection_call_with_unix_fd_list()</code></a>.</td>
4535 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
4536 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
4539 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4541 <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Otherwise a <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with
4542 return values. Free with <a href="./../glib/glib/glib-GVariant.html#g-variant-unref"><code class="function">g_variant_unref()</code></a>.</td>
4546 <p class="since">Since 2.30</p>
4549 <div class="refsect2">
4550 <a name="g-dbus-connection-call-with-unix-fd-list-sync"></a><h3>g_dbus_connection_call_with_unix_fd_list_sync ()</h3>
4551 <pre class="programlisting"><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * g_dbus_connection_call_with_unix_fd_list_sync
4552 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4553 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *bus_name</code></em>,
4554 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
4555 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
4556 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
4557 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
4558 <em class="parameter"><code>const <a href="./../glib/glib/glib-GVariantType.html#GVariantType"><span class="type">GVariantType</span></a> *reply_type</code></em>,
4559 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> flags</code></em>,
4560 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
4561 <em class="parameter"><code><a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> *fd_list</code></em>,
4562 <em class="parameter"><code><a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> **out_fd_list</code></em>,
4563 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
4564 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
4566 Like <a class="link" href="GDBusConnection.html#g-dbus-connection-call-sync" title="g_dbus_connection_call_sync ()"><code class="function">g_dbus_connection_call_sync()</code></a> but also takes and returns <a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> objects.
4569 This method is only available on UNIX.
4571 <div class="variablelist"><table border="0">
4572 <col align="left" valign="top">
4575 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4576 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4579 <td><p><span class="term"><em class="parameter"><code>bus_name</code></em> :</span></p></td>
4580 <td>A unique or well-known bus name.</td>
4583 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4584 <td>Path of remote object.</td>
4587 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
4588 <td>D-Bus interface to invoke method on.</td>
4591 <td><p><span class="term"><em class="parameter"><code>method_name</code></em> :</span></p></td>
4592 <td>The name of the method to invoke.</td>
4595 <td><p><span class="term"><em class="parameter"><code>parameters</code></em> :</span></p></td>
4596 <td>A <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with parameters for the method
4597 or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not passing parameters. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4601 <td><p><span class="term"><em class="parameter"><code>reply_type</code></em> :</span></p></td>
4602 <td>The expected type of the reply, or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4606 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
4607 <td>Flags from the <a class="link" href="GDBusConnection.html#GDBusCallFlags" title="enum GDBusCallFlags"><span class="type">GDBusCallFlags</span></a> enumeration.</td>
4610 <td><p><span class="term"><em class="parameter"><code>timeout_msec</code></em> :</span></p></td>
4611 <td>The timeout in milliseconds, -1 to use the default
4612 timeout or <a href="./../glib/glib/glib-Basic-Types.html#G-MAXINT:CAPS"><code class="literal">G_MAXINT</code></a> for no timeout.</td>
4615 <td><p><span class="term"><em class="parameter"><code>fd_list</code></em> :</span></p></td>
4616 <td>A <a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4620 <td><p><span class="term"><em class="parameter"><code>out_fd_list</code></em> :</span></p></td>
4621 <td>Return location for a <a class="link" href="GUnixFDList.html" title="GUnixFDList"><span class="type">GUnixFDList</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4625 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
4626 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4630 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
4631 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
4634 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4636 <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. Otherwise a <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with
4637 return values. Free with <a href="./../glib/glib/glib-GVariant.html#g-variant-unref"><code class="function">g_variant_unref()</code></a>.</td>
4641 <p class="since">Since 2.30</p>
4644 <div class="refsect2">
4645 <a name="g-dbus-connection-emit-signal"></a><h3>g_dbus_connection_emit_signal ()</h3>
4646 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_emit_signal (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4647 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *destination_bus_name</code></em>,
4648 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
4649 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
4650 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *signal_name</code></em>,
4651 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
4652 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
4657 If the parameters GVariant is floating, it is consumed.
4660 This can only fail if <em class="parameter"><code>parameters</code></em> is not compatible with the D-Bus protocol.
4662 <div class="variablelist"><table border="0">
4663 <col align="left" valign="top">
4666 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4667 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4670 <td><p><span class="term"><em class="parameter"><code>destination_bus_name</code></em> :</span></p></td>
4671 <td>The unique bus name for the destination
4672 for the signal or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to emit to all listeners. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4676 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4677 <td>Path of remote object.</td>
4680 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
4681 <td>D-Bus interface to emit a signal on.</td>
4684 <td><p><span class="term"><em class="parameter"><code>signal_name</code></em> :</span></p></td>
4685 <td>The name of the signal to emit.</td>
4688 <td><p><span class="term"><em class="parameter"><code>parameters</code></em> :</span></p></td>
4689 <td>A <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with parameters for the signal
4690 or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if not passing parameters. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4694 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
4695 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
4698 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4700 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> unless <em class="parameter"><code>error</code></em> is set.</td>
4704 <p class="since">Since 2.26</p>
4707 <div class="refsect2">
4708 <a name="GDBusSignalFlags"></a><h3>enum GDBusSignalFlags</h3>
4709 <pre class="programlisting">typedef enum {
4710 G_DBUS_SIGNAL_FLAGS_NONE = 0,
4711 G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE = (1<<0)
4715 Flags used when subscribing to signals via <a class="link" href="GDBusConnection.html#g-dbus-connection-signal-subscribe" title="g_dbus_connection_signal_subscribe ()"><code class="function">g_dbus_connection_signal_subscribe()</code></a>.
4717 <div class="variablelist"><table border="0">
4718 <col align="left" valign="top">
4721 <td><p><a name="G-DBUS-SIGNAL-FLAGS-NONE:CAPS"></a><span class="term"><code class="literal">G_DBUS_SIGNAL_FLAGS_NONE</code></span></p></td>
4726 <td><p><a name="G-DBUS-SIGNAL-FLAGS-NO-MATCH-RULE:CAPS"></a><span class="term"><code class="literal">G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE</code></span></p></td>
4727 <td>Don't actually send the AddMatch
4728 D-Bus call for this signal subscription. This gives you more control
4729 over which match rules you add (but you must add them manually).
4734 <p class="since">Since 2.26</p>
4737 <div class="refsect2">
4738 <a name="GDBusSignalCallback"></a><h3>GDBusSignalCallback ()</h3>
4739 <pre class="programlisting"><span class="returnvalue">void</span> (*GDBusSignalCallback) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4740 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender_name</code></em>,
4741 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
4742 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
4743 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *signal_name</code></em>,
4744 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
4745 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
4747 Signature for callback function used in <a class="link" href="GDBusConnection.html#g-dbus-connection-signal-subscribe" title="g_dbus_connection_signal_subscribe ()"><code class="function">g_dbus_connection_signal_subscribe()</code></a>.
4749 <div class="variablelist"><table border="0">
4750 <col align="left" valign="top">
4753 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4754 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4757 <td><p><span class="term"><em class="parameter"><code>sender_name</code></em> :</span></p></td>
4758 <td>The unique bus name of the sender of the signal.</td>
4761 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4762 <td>The object path that the signal was emitted on.</td>
4765 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
4766 <td>The name of the interface.</td>
4769 <td><p><span class="term"><em class="parameter"><code>signal_name</code></em> :</span></p></td>
4770 <td>The name of the signal.</td>
4773 <td><p><span class="term"><em class="parameter"><code>parameters</code></em> :</span></p></td>
4774 <td>A <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with parameters for the signal.</td>
4777 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
4778 <td>User data passed when subscribing to the signal.</td>
4782 <p class="since">Since 2.26</p>
4785 <div class="refsect2">
4786 <a name="g-dbus-connection-signal-subscribe"></a><h3>g_dbus_connection_signal_subscribe ()</h3>
4787 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> g_dbus_connection_signal_subscribe (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4788 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
4789 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
4790 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *member</code></em>,
4791 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
4792 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg0</code></em>,
4793 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSignalFlags" title="enum GDBusSignalFlags"><span class="type">GDBusSignalFlags</span></a> flags</code></em>,
4794 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSignalCallback" title="GDBusSignalCallback ()"><span class="type">GDBusSignalCallback</span></a> callback</code></em>,
4795 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
4796 <em class="parameter"><code><a href="./../glib/glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> user_data_free_func</code></em>);</pre>
4798 Subscribes to signals on <em class="parameter"><code>connection</code></em> and invokes <em class="parameter"><code>callback</code></em> with a
4799 whenever the signal is received. Note that <em class="parameter"><code>callback</code></em>
4800 will be invoked in the <GTKDOCLINK HREF="g-main-context-push-thread-default">thread-default main
4801 loop</GTKDOCLINK> of the thread you are calling this method from.
4804 If <em class="parameter"><code>connection</code></em> is not a message bus connection, <em class="parameter"><code>sender</code></em> must be
4805 <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.
4808 If <em class="parameter"><code>sender</code></em> is a well-known name note that <em class="parameter"><code>callback</code></em> is invoked with
4809 the unique name for the owner of <em class="parameter"><code>sender</code></em>, not the well-known name
4810 as one would expect. This is because the message bus rewrites the
4811 name. As such, to avoid certain race conditions, users should be
4812 tracking the name owner of the well-known name and use that when
4813 processing the received signal.
4815 <div class="variablelist"><table border="0">
4816 <col align="left" valign="top">
4819 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4820 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4823 <td><p><span class="term"><em class="parameter"><code>sender</code></em> :</span></p></td>
4824 <td>Sender name to match on (unique or well-known name)
4825 or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to listen from all senders. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4829 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
4830 <td>D-Bus interface name to match on or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to
4831 match on all interfaces. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4835 <td><p><span class="term"><em class="parameter"><code>member</code></em> :</span></p></td>
4836 <td>D-Bus signal name to match on or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to match on all signals. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4840 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4841 <td>Object path to match on or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to match on all object paths. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4845 <td><p><span class="term"><em class="parameter"><code>arg0</code></em> :</span></p></td>
4846 <td>Contents of first string argument to match on or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
4847 to match on all kinds of arguments. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4851 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
4852 <td>Flags describing how to subscribe to the signal (currently unused).</td>
4855 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
4856 <td>Callback to invoke when there is a signal matching the requested data.</td>
4859 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
4860 <td>User data to pass to <em class="parameter"><code>callback</code></em>.</td>
4863 <td><p><span class="term"><em class="parameter"><code>user_data_free_func</code></em> :</span></p></td>
4864 <td>Function to free <em class="parameter"><code>user_data</code></em> with when
4865 subscription is removed or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4869 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4870 <td>A subscription identifier that can be used with <a class="link" href="GDBusConnection.html#g-dbus-connection-signal-unsubscribe" title="g_dbus_connection_signal_unsubscribe ()"><code class="function">g_dbus_connection_signal_unsubscribe()</code></a>.</td>
4874 <p class="since">Since 2.26</p>
4877 <div class="refsect2">
4878 <a name="g-dbus-connection-signal-unsubscribe"></a><h3>g_dbus_connection_signal_unsubscribe ()</h3>
4879 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_signal_unsubscribe
4880 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4881 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> subscription_id</code></em>);</pre>
4883 Unsubscribes from signals.
4885 <div class="variablelist"><table border="0">
4886 <col align="left" valign="top">
4889 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4890 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4893 <td><p><span class="term"><em class="parameter"><code>subscription_id</code></em> :</span></p></td>
4894 <td>A subscription id obtained from <a class="link" href="GDBusConnection.html#g-dbus-connection-signal-subscribe" title="g_dbus_connection_signal_subscribe ()"><code class="function">g_dbus_connection_signal_subscribe()</code></a>.</td>
4898 <p class="since">Since 2.26</p>
4901 <div class="refsect2">
4902 <a name="GDBusSendMessageFlags"></a><h3>enum GDBusSendMessageFlags</h3>
4903 <pre class="programlisting">typedef enum {
4904 G_DBUS_SEND_MESSAGE_FLAGS_NONE = 0,
4905 G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL = (1<<0)
4906 } GDBusSendMessageFlags;
4909 Flags used when sending <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a>s on a <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.
4911 <div class="variablelist"><table border="0">
4912 <col align="left" valign="top">
4915 <td><p><a name="G-DBUS-SEND-MESSAGE-FLAGS-NONE:CAPS"></a><span class="term"><code class="literal">G_DBUS_SEND_MESSAGE_FLAGS_NONE</code></span></p></td>
4920 <td><p><a name="G-DBUS-SEND-MESSAGE-FLAGS-PRESERVE-SERIAL:CAPS"></a><span class="term"><code class="literal">G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL</code></span></p></td>
4921 <td>Do not automatically
4922 assign a serial number from the <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> object when
4928 <p class="since">Since 2.26</p>
4931 <div class="refsect2">
4932 <a name="g-dbus-connection-send-message"></a><h3>g_dbus_connection_send_message ()</h3>
4933 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_send_message (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
4934 <em class="parameter"><code><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> *message</code></em>,
4935 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSendMessageFlags" title="enum GDBusSendMessageFlags"><span class="type">GDBusSendMessageFlags</span></a> flags</code></em>,
4936 <em class="parameter"><code>volatile <a href="./../glib/glib/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_serial</code></em>,
4937 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
4939 Asynchronously sends <em class="parameter"><code>message</code></em> to the peer represented by <em class="parameter"><code>connection</code></em>.
4942 Unless <em class="parameter"><code>flags</code></em> contain the
4943 <a class="link" href="GDBusConnection.html#G-DBUS-SEND-MESSAGE-FLAGS-PRESERVE-SERIAL:CAPS"><code class="literal">G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL</code></a> flag, the serial number
4944 will be assigned by <em class="parameter"><code>connection</code></em> and set on <em class="parameter"><code>message</code></em> via
4945 <a class="link" href="GDBusMessage.html#g-dbus-message-set-serial" title="g_dbus_message_set_serial ()"><code class="function">g_dbus_message_set_serial()</code></a>. If <em class="parameter"><code>out_serial</code></em> is not <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, then the
4946 serial number used will be written to this location prior to
4947 submitting the message to the underlying transport.
4950 If <em class="parameter"><code>connection</code></em> is closed then the operation will fail with
4951 <a class="link" href="gio-GIOError.html#G-IO-ERROR-CLOSED:CAPS"><code class="literal">G_IO_ERROR_CLOSED</code></a>. If <em class="parameter"><code>message</code></em> is not well-formed,
4952 the operation fails with <a class="link" href="gio-GIOError.html#G-IO-ERROR-INVALID-ARGUMENT:CAPS"><code class="literal">G_IO_ERROR_INVALID_ARGUMENT</code></a>.
4955 See <a class="xref" href="GDBusConnection.html#gdbus-server" title="Example 2. D-Bus server example">Example 2, “D-Bus server example”</a> and <a class="xref" href="GDBusConnection.html#gdbus-unix-fd-client" title="Example 4. D-Bus UNIX File Descriptor example">Example 4, “D-Bus UNIX File Descriptor example”</a> for an example of how to use this
4956 low-level API to send and receive UNIX file descriptors.
4959 Note that <em class="parameter"><code>message</code></em> must be unlocked, unless <em class="parameter"><code>flags</code></em> contain the
4960 <a class="link" href="GDBusConnection.html#G-DBUS-SEND-MESSAGE-FLAGS-PRESERVE-SERIAL:CAPS"><code class="literal">G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL</code></a> flag.
4962 <div class="variablelist"><table border="0">
4963 <col align="left" valign="top">
4966 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
4967 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
4970 <td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
4971 <td>A <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a>
4975 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
4976 <td>Flags affecting how the message is sent.</td>
4979 <td><p><span class="term"><em class="parameter"><code>out_serial</code></em> :</span></p></td>
4980 <td>Return location for serial number assigned
4981 to <em class="parameter"><code>message</code></em> when sending it or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
4985 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
4986 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
4989 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4991 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the message was well-formed and queued for
4992 transmission, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set.</td>
4996 <p class="since">Since 2.26</p>
4999 <div class="refsect2">
5000 <a name="g-dbus-connection-send-message-with-reply"></a><h3>g_dbus_connection_send_message_with_reply ()</h3>
5001 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_send_message_with_reply
5002 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5003 <em class="parameter"><code><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> *message</code></em>,
5004 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSendMessageFlags" title="enum GDBusSendMessageFlags"><span class="type">GDBusSendMessageFlags</span></a> flags</code></em>,
5005 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
5006 <em class="parameter"><code>volatile <a href="./../glib/glib/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_serial</code></em>,
5007 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
5008 <em class="parameter"><code><a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> callback</code></em>,
5009 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
5011 Asynchronously sends <em class="parameter"><code>message</code></em> to the peer represented by <em class="parameter"><code>connection</code></em>.
5014 Unless <em class="parameter"><code>flags</code></em> contain the
5015 <a class="link" href="GDBusConnection.html#G-DBUS-SEND-MESSAGE-FLAGS-PRESERVE-SERIAL:CAPS"><code class="literal">G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL</code></a> flag, the serial number
5016 will be assigned by <em class="parameter"><code>connection</code></em> and set on <em class="parameter"><code>message</code></em> via
5017 <a class="link" href="GDBusMessage.html#g-dbus-message-set-serial" title="g_dbus_message_set_serial ()"><code class="function">g_dbus_message_set_serial()</code></a>. If <em class="parameter"><code>out_serial</code></em> is not <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, then the
5018 serial number used will be written to this location prior to
5019 submitting the message to the underlying transport.
5022 If <em class="parameter"><code>connection</code></em> is closed then the operation will fail with
5023 <a class="link" href="gio-GIOError.html#G-IO-ERROR-CLOSED:CAPS"><code class="literal">G_IO_ERROR_CLOSED</code></a>. If <em class="parameter"><code>cancellable</code></em> is canceled, the operation will
5024 fail with <a class="link" href="gio-GIOError.html#G-IO-ERROR-CANCELLED:CAPS"><code class="literal">G_IO_ERROR_CANCELLED</code></a>. If <em class="parameter"><code>message</code></em> is not well-formed,
5025 the operation fails with <a class="link" href="gio-GIOError.html#G-IO-ERROR-INVALID-ARGUMENT:CAPS"><code class="literal">G_IO_ERROR_INVALID_ARGUMENT</code></a>.
5028 This is an asynchronous method. When the operation is finished, <em class="parameter"><code>callback</code></em> will be invoked
5029 in the <a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-context-push-thread-default">thread-default main loop</a>
5030 of the thread you are calling this method from. You can then call
5031 <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply-finish" title="g_dbus_connection_send_message_with_reply_finish ()"><code class="function">g_dbus_connection_send_message_with_reply_finish()</code></a> to get the result of the operation.
5032 See <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply-sync" title="g_dbus_connection_send_message_with_reply_sync ()"><code class="function">g_dbus_connection_send_message_with_reply_sync()</code></a> for the synchronous version.
5035 Note that <em class="parameter"><code>message</code></em> must be unlocked, unless <em class="parameter"><code>flags</code></em> contain the
5036 <a class="link" href="GDBusConnection.html#G-DBUS-SEND-MESSAGE-FLAGS-PRESERVE-SERIAL:CAPS"><code class="literal">G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL</code></a> flag.
5039 See <a class="xref" href="GDBusConnection.html#gdbus-server" title="Example 2. D-Bus server example">Example 2, “D-Bus server example”</a> and <a class="xref" href="GDBusConnection.html#gdbus-unix-fd-client" title="Example 4. D-Bus UNIX File Descriptor example">Example 4, “D-Bus UNIX File Descriptor example”</a> for an example of how to use this
5040 low-level API to send and receive UNIX file descriptors.
5042 <div class="variablelist"><table border="0">
5043 <col align="left" valign="top">
5046 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5047 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5050 <td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
5051 <td>A <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a>.</td>
5054 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
5055 <td>Flags affecting how the message is sent.</td>
5058 <td><p><span class="term"><em class="parameter"><code>timeout_msec</code></em> :</span></p></td>
5059 <td>The timeout in milliseconds, -1 to use the default
5060 timeout or <a href="./../glib/glib/glib-Basic-Types.html#G-MAXINT:CAPS"><code class="literal">G_MAXINT</code></a> for no timeout.</td>
5063 <td><p><span class="term"><em class="parameter"><code>out_serial</code></em> :</span></p></td>
5064 <td>Return location for serial number assigned
5065 to <em class="parameter"><code>message</code></em> when sending it or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
5069 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
5070 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
5074 <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td>
5075 <td>A <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> to call when the request is
5076 satisfied or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if you don't care about the result. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
5080 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5081 <td>The data to pass to <em class="parameter"><code>callback</code></em>.</td>
5085 <p class="since">Since 2.26</p>
5088 <div class="refsect2">
5089 <a name="g-dbus-connection-send-message-with-reply-finish"></a><h3>g_dbus_connection_send_message_with_reply_finish ()</h3>
5090 <pre class="programlisting"><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="returnvalue">GDBusMessage</span></a> * g_dbus_connection_send_message_with_reply_finish
5091 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5092 <em class="parameter"><code><a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> *res</code></em>,
5093 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
5095 Finishes an operation started with <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply" title="g_dbus_connection_send_message_with_reply ()"><code class="function">g_dbus_connection_send_message_with_reply()</code></a>.
5098 Note that <em class="parameter"><code>error</code></em> is only set if a local in-process error
5099 occurred. That is to say that the returned <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> object may
5100 be of type <a class="link" href="GDBusMessage.html#G-DBUS-MESSAGE-TYPE-ERROR:CAPS"><code class="literal">G_DBUS_MESSAGE_TYPE_ERROR</code></a>. Use
5101 <a class="link" href="GDBusMessage.html#g-dbus-message-to-gerror" title="g_dbus_message_to_gerror ()"><code class="function">g_dbus_message_to_gerror()</code></a> to transcode this to a <a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>.
5104 See <a class="xref" href="GDBusConnection.html#gdbus-server" title="Example 2. D-Bus server example">Example 2, “D-Bus server example”</a> and <a class="xref" href="GDBusConnection.html#gdbus-unix-fd-client" title="Example 4. D-Bus UNIX File Descriptor example">Example 4, “D-Bus UNIX File Descriptor example”</a> for an example of how to use this
5105 low-level API to send and receive UNIX file descriptors.
5107 <div class="variablelist"><table border="0">
5108 <col align="left" valign="top">
5111 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5112 <td>a <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>
5116 <td><p><span class="term"><em class="parameter"><code>res</code></em> :</span></p></td>
5117 <td>A <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a> obtained from the <a class="link" href="GAsyncResult.html#GAsyncReadyCallback" title="GAsyncReadyCallback ()"><span class="type">GAsyncReadyCallback</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply" title="g_dbus_connection_send_message_with_reply ()"><code class="function">g_dbus_connection_send_message_with_reply()</code></a>.</td>
5120 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
5121 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
5124 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5125 <td>A locked <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
5130 <p class="since">Since 2.26</p>
5133 <div class="refsect2">
5134 <a name="g-dbus-connection-send-message-with-reply-sync"></a><h3>g_dbus_connection_send_message_with_reply_sync ()</h3>
5135 <pre class="programlisting"><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="returnvalue">GDBusMessage</span></a> * g_dbus_connection_send_message_with_reply_sync
5136 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5137 <em class="parameter"><code><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> *message</code></em>,
5138 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSendMessageFlags" title="enum GDBusSendMessageFlags"><span class="type">GDBusSendMessageFlags</span></a> flags</code></em>,
5139 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> timeout_msec</code></em>,
5140 <em class="parameter"><code>volatile <a href="./../glib/glib/glib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *out_serial</code></em>,
5141 <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
5142 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
5144 Synchronously sends <em class="parameter"><code>message</code></em> to the peer represented by <em class="parameter"><code>connection</code></em>
5145 and blocks the calling thread until a reply is received or the
5146 timeout is reached. See <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply" title="g_dbus_connection_send_message_with_reply ()"><code class="function">g_dbus_connection_send_message_with_reply()</code></a>
5147 for the asynchronous version of this method.
5150 Unless <em class="parameter"><code>flags</code></em> contain the
5151 <a class="link" href="GDBusConnection.html#G-DBUS-SEND-MESSAGE-FLAGS-PRESERVE-SERIAL:CAPS"><code class="literal">G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL</code></a> flag, the serial number
5152 will be assigned by <em class="parameter"><code>connection</code></em> and set on <em class="parameter"><code>message</code></em> via
5153 <a class="link" href="GDBusMessage.html#g-dbus-message-set-serial" title="g_dbus_message_set_serial ()"><code class="function">g_dbus_message_set_serial()</code></a>. If <em class="parameter"><code>out_serial</code></em> is not <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, then the
5154 serial number used will be written to this location prior to
5155 submitting the message to the underlying transport.
5158 If <em class="parameter"><code>connection</code></em> is closed then the operation will fail with
5159 <a class="link" href="gio-GIOError.html#G-IO-ERROR-CLOSED:CAPS"><code class="literal">G_IO_ERROR_CLOSED</code></a>. If <em class="parameter"><code>cancellable</code></em> is canceled, the operation will
5160 fail with <a class="link" href="gio-GIOError.html#G-IO-ERROR-CANCELLED:CAPS"><code class="literal">G_IO_ERROR_CANCELLED</code></a>. If <em class="parameter"><code>message</code></em> is not well-formed,
5161 the operation fails with <a class="link" href="gio-GIOError.html#G-IO-ERROR-INVALID-ARGUMENT:CAPS"><code class="literal">G_IO_ERROR_INVALID_ARGUMENT</code></a>.
5164 Note that <em class="parameter"><code>error</code></em> is only set if a local in-process error
5165 occurred. That is to say that the returned <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> object may
5166 be of type <a class="link" href="GDBusMessage.html#G-DBUS-MESSAGE-TYPE-ERROR:CAPS"><code class="literal">G_DBUS_MESSAGE_TYPE_ERROR</code></a>. Use
5167 <a class="link" href="GDBusMessage.html#g-dbus-message-to-gerror" title="g_dbus_message_to_gerror ()"><code class="function">g_dbus_message_to_gerror()</code></a> to transcode this to a <a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>.
5170 See <a class="xref" href="GDBusConnection.html#gdbus-server" title="Example 2. D-Bus server example">Example 2, “D-Bus server example”</a> and <a class="xref" href="GDBusConnection.html#gdbus-unix-fd-client" title="Example 4. D-Bus UNIX File Descriptor example">Example 4, “D-Bus UNIX File Descriptor example”</a> for an example of how to use this
5171 low-level API to send and receive UNIX file descriptors.
5174 Note that <em class="parameter"><code>message</code></em> must be unlocked, unless <em class="parameter"><code>flags</code></em> contain the
5175 <a class="link" href="GDBusConnection.html#G-DBUS-SEND-MESSAGE-FLAGS-PRESERVE-SERIAL:CAPS"><code class="literal">G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL</code></a> flag.
5177 <div class="variablelist"><table border="0">
5178 <col align="left" valign="top">
5181 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5182 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5185 <td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
5186 <td>A <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a>.</td>
5189 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
5190 <td>Flags affecting how the message is sent.</td>
5193 <td><p><span class="term"><em class="parameter"><code>timeout_msec</code></em> :</span></p></td>
5194 <td>The timeout in milliseconds, -1 to use the default
5195 timeout or <a href="./../glib/glib/glib-Basic-Types.html#G-MAXINT:CAPS"><code class="literal">G_MAXINT</code></a> for no timeout.</td>
5198 <td><p><span class="term"><em class="parameter"><code>out_serial</code></em> :</span></p></td>
5199 <td>Return location for serial number assigned
5200 to <em class="parameter"><code>message</code></em> when sending it or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
5204 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
5205 <td>A <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
5209 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
5210 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
5213 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5214 <td>A locked <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> that is the reply to <em class="parameter"><code>message</code></em> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>error</code></em> is set. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
5219 <p class="since">Since 2.26</p>
5222 <div class="refsect2">
5223 <a name="GDBusMessageFilterFunction"></a><h3>GDBusMessageFilterFunction ()</h3>
5224 <pre class="programlisting"><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="returnvalue">GDBusMessage</span></a> * (*GDBusMessageFilterFunction) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5225 <em class="parameter"><code><a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> *message</code></em>,
5226 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> incoming</code></em>,
5227 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
5229 Signature for function used in <a class="link" href="GDBusConnection.html#g-dbus-connection-add-filter" title="g_dbus_connection_add_filter ()"><code class="function">g_dbus_connection_add_filter()</code></a>.
5232 A filter function is passed a <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> and expected to return
5233 a <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> too. Passive filter functions that don't modify the
5234 message can simply return the <em class="parameter"><code>message</code></em> object:
5236 <div class="informalexample">
5237 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
5240 <td class="listing_lines" align="right"><pre>1
5249 <td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> <a href="GDBusMessage.html">GDBusMessage</a> </span><span class="symbol">*</span>
5250 <span class="function">passive_filter</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html">GDBusConnection</a> </span><span class="symbol">*</span><span class="normal">connection</span>
5251 <span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">message</span><span class="symbol">,</span>
5252 <span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> incoming</span><span class="symbol">,</span>
5253 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
5254 <span class="cbracket">{</span>
5255 <span class="normal"> </span><span class="comment">/* inspect @message */</span>
5256 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> message</span><span class="symbol">;</span>
5257 <span class="cbracket">}</span></pre></td>
5264 Filter functions that wants to drop a message can simply return <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>:
5266 <div class="informalexample">
5267 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
5270 <td class="listing_lines" align="right"><pre>1
5283 <td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> <a href="GDBusMessage.html">GDBusMessage</a> </span><span class="symbol">*</span>
5284 <span class="function">drop_filter</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html">GDBusConnection</a> </span><span class="symbol">*</span><span class="normal">connection</span>
5285 <span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">message</span><span class="symbol">,</span>
5286 <span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> incoming</span><span class="symbol">,</span>
5287 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
5288 <span class="cbracket">{</span>
5289 <span class="normal"> </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">should_drop_message</span><span class="symbol">)</span>
5290 <span class="normal"> </span><span class="cbracket">{</span>
5291 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">message</span><span class="symbol">);</span>
5292 <span class="normal"> message </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
5293 <span class="normal"> </span><span class="cbracket">}</span>
5294 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> message</span><span class="symbol">;</span>
5295 <span class="cbracket">}</span></pre></td>
5302 Finally, a filter function may modify a message by copying it:
5304 <div class="informalexample">
5305 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
5308 <td class="listing_lines" align="right"><pre>1
5326 <td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> <a href="GDBusMessage.html">GDBusMessage</a> </span><span class="symbol">*</span>
5327 <span class="function">modifying_filter</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="GDBusConnection.html">GDBusConnection</a> </span><span class="symbol">*</span><span class="normal">connection</span>
5328 <span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">message</span><span class="symbol">,</span>
5329 <span class="normal"> </span><span class="usertype">gboolean</span><span class="normal"> incoming</span><span class="symbol">,</span>
5330 <span class="normal"> </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
5331 <span class="cbracket">{</span>
5332 <span class="normal"> </span><span class="usertype">GDBusMessage</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">copy</span><span class="symbol">;</span>
5333 <span class="normal"> </span><span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error</span><span class="symbol">;</span>
5335 <span class="normal"> error </span><span class="symbol">=</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>
5336 <span class="normal"> copy </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusMessage.html#g-dbus-message-copy">g_dbus_message_copy</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">message</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">error</span><span class="symbol">);</span>
5337 <span class="normal"> </span><span class="comment">/* handle @error being is set */</span>
5338 <span class="normal"> </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">message</span><span class="symbol">);</span>
5340 <span class="normal"> </span><span class="comment">/* modify @copy */</span>
5342 <span class="normal"> </span><span class="keyword">return</span><span class="normal"> copy</span><span class="symbol">;</span>
5343 <span class="cbracket">}</span></pre></td>
5350 If the returned <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> is different from <em class="parameter"><code>message</code></em> and cannot
5351 be sent on <em class="parameter"><code>connection</code></em> (it could use features, such as file
5352 descriptors, not compatible with <em class="parameter"><code>connection</code></em>), then a warning is
5353 logged to <span class="emphasis"><em>standard error</em></span>. Applications can
5354 check this ahead of time using <a class="link" href="GDBusMessage.html#g-dbus-message-to-blob" title="g_dbus_message_to_blob ()"><code class="function">g_dbus_message_to_blob()</code></a> passing a
5355 <a class="link" href="GDBusConnection.html#GDBusCapabilityFlags" title="enum GDBusCapabilityFlags"><span class="type">GDBusCapabilityFlags</span></a> value obtained from <em class="parameter"><code>connection</code></em>.
5357 <div class="variablelist"><table border="0">
5358 <col align="left" valign="top">
5361 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5362 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
5366 <td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
5367 <td>A locked <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> that the filter function takes ownership of. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span>
5371 <td><p><span class="term"><em class="parameter"><code>incoming</code></em> :</span></p></td>
5373 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if it is a message received from the other peer, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it is
5374 a message to be sent to the other peer.</td>
5377 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5378 <td>User data passed when adding the filter.</td>
5381 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5382 <td>A <a class="link" href="GDBusMessage.html" title="GDBusMessage"><span class="type">GDBusMessage</span></a> that will be freed with
5383 <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to drop the message. Passive filter
5384 functions can simply return the passed <em class="parameter"><code>message</code></em> object. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
5389 <p class="since">Since 2.26</p>
5392 <div class="refsect2">
5393 <a name="g-dbus-connection-add-filter"></a><h3>g_dbus_connection_add_filter ()</h3>
5394 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> g_dbus_connection_add_filter (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5395 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusMessageFilterFunction" title="GDBusMessageFilterFunction ()"><span class="type">GDBusMessageFilterFunction</span></a> filter_function</code></em>,
5396 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
5397 <em class="parameter"><code><a href="./../glib/glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> user_data_free_func</code></em>);</pre>
5399 Adds a message filter. Filters are handlers that are run on all
5400 incoming and outgoing messages, prior to standard dispatch. Filters
5401 are run in the order that they were added. The same handler can be
5402 added as a filter more than once, in which case it will be run more
5403 than once. Filters added during a filter callback won't be run on
5404 the message being processed. Filter functions are allowed to modify
5405 and even drop messages.
5408 Note that filters are run in a dedicated message handling thread so
5409 they can't block and, generally, can't do anything but signal a
5410 worker thread. Also note that filters are rarely needed - use API
5411 such as <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply" title="g_dbus_connection_send_message_with_reply ()"><code class="function">g_dbus_connection_send_message_with_reply()</code></a>,
5412 <a class="link" href="GDBusConnection.html#g-dbus-connection-signal-subscribe" title="g_dbus_connection_signal_subscribe ()"><code class="function">g_dbus_connection_signal_subscribe()</code></a> or <a class="link" href="GDBusConnection.html#g-dbus-connection-call" title="g_dbus_connection_call ()"><code class="function">g_dbus_connection_call()</code></a> instead.
5415 If a filter consumes an incoming message the message is not
5416 dispatched anywhere else - not even the standard dispatch machinery
5417 (that API such as <a class="link" href="GDBusConnection.html#g-dbus-connection-signal-subscribe" title="g_dbus_connection_signal_subscribe ()"><code class="function">g_dbus_connection_signal_subscribe()</code></a> and
5418 <a class="link" href="GDBusConnection.html#g-dbus-connection-send-message-with-reply" title="g_dbus_connection_send_message_with_reply ()"><code class="function">g_dbus_connection_send_message_with_reply()</code></a> relies on) will see the
5419 message. Similary, if a filter consumes an outgoing message, the
5420 message will not be sent to the other peer.
5422 <div class="variablelist"><table border="0">
5423 <col align="left" valign="top">
5426 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5427 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5430 <td><p><span class="term"><em class="parameter"><code>filter_function</code></em> :</span></p></td>
5431 <td>A filter function.</td>
5434 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5435 <td>User data to pass to <em class="parameter"><code>filter_function</code></em>.</td>
5438 <td><p><span class="term"><em class="parameter"><code>user_data_free_func</code></em> :</span></p></td>
5439 <td>Function to free <em class="parameter"><code>user_data</code></em> with when filter
5440 is removed or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
5443 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5444 <td>A filter identifier that can be used with
5445 <a class="link" href="GDBusConnection.html#g-dbus-connection-remove-filter" title="g_dbus_connection_remove_filter ()"><code class="function">g_dbus_connection_remove_filter()</code></a>.</td>
5449 <p class="since">Since 2.26</p>
5452 <div class="refsect2">
5453 <a name="g-dbus-connection-remove-filter"></a><h3>g_dbus_connection_remove_filter ()</h3>
5454 <pre class="programlisting"><span class="returnvalue">void</span> g_dbus_connection_remove_filter (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5455 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> filter_id</code></em>);</pre>
5459 <div class="variablelist"><table border="0">
5460 <col align="left" valign="top">
5463 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5464 <td>a <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>
5468 <td><p><span class="term"><em class="parameter"><code>filter_id</code></em> :</span></p></td>
5469 <td>an identifier obtained from <a class="link" href="GDBusConnection.html#g-dbus-connection-add-filter" title="g_dbus_connection_add_filter ()"><code class="function">g_dbus_connection_add_filter()</code></a>
5474 <p class="since">Since 2.26</p>
5477 <div class="refsect2">
5478 <a name="GDBusInterfaceVTable"></a><h3>GDBusInterfaceVTable</h3>
5479 <pre class="programlisting">typedef struct {
5480 GDBusInterfaceMethodCallFunc method_call;
5481 GDBusInterfaceGetPropertyFunc get_property;
5482 GDBusInterfaceSetPropertyFunc set_property;
5483 } GDBusInterfaceVTable;
5486 Virtual table for handling properties and method calls for a D-Bus
5490 If you want to handle getting/setting D-Bus properties asynchronously, simply
5491 register an object with the <code class="literal">org.freedesktop.DBus.Properties</code>
5492 D-Bus interface using <a class="link" href="GDBusConnection.html#g-dbus-connection-register-object" title="g_dbus_connection_register_object ()"><code class="function">g_dbus_connection_register_object()</code></a>.
5494 <div class="variablelist"><table border="0">
5495 <col align="left" valign="top">
5498 <td><p><span class="term"><a class="link" href="GDBusConnection.html#GDBusInterfaceMethodCallFunc" title="GDBusInterfaceMethodCallFunc ()"><span class="type">GDBusInterfaceMethodCallFunc</span></a> <em class="structfield"><code><a name="GDBusInterfaceVTable.method-call"></a>method_call</code></em>;</span></p></td>
5499 <td>Function for handling incoming method calls.</td>
5502 <td><p><span class="term"><a class="link" href="GDBusConnection.html#GDBusInterfaceGetPropertyFunc" title="GDBusInterfaceGetPropertyFunc ()"><span class="type">GDBusInterfaceGetPropertyFunc</span></a> <em class="structfield"><code><a name="GDBusInterfaceVTable.get-property"></a>get_property</code></em>;</span></p></td>
5503 <td>Function for getting a property.</td>
5506 <td><p><span class="term"><a class="link" href="GDBusConnection.html#GDBusInterfaceSetPropertyFunc" title="GDBusInterfaceSetPropertyFunc ()"><span class="type">GDBusInterfaceSetPropertyFunc</span></a> <em class="structfield"><code><a name="GDBusInterfaceVTable.set-property"></a>set_property</code></em>;</span></p></td>
5507 <td>Function for setting a property.</td>
5511 <p class="since">Since 2.26</p>
5514 <div class="refsect2">
5515 <a name="GDBusInterfaceMethodCallFunc"></a><h3>GDBusInterfaceMethodCallFunc ()</h3>
5516 <pre class="programlisting"><span class="returnvalue">void</span> (*GDBusInterfaceMethodCallFunc) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5517 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
5518 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
5519 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
5520 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *method_name</code></em>,
5521 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *parameters</code></em>,
5522 <em class="parameter"><code><a class="link" href="GDBusMethodInvocation.html" title="GDBusMethodInvocation"><span class="type">GDBusMethodInvocation</span></a> *invocation</code></em>,
5523 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
5525 The type of the <em class="parameter"><code>method_call</code></em> function in <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a>.
5527 <div class="variablelist"><table border="0">
5528 <col align="left" valign="top">
5531 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5532 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5535 <td><p><span class="term"><em class="parameter"><code>sender</code></em> :</span></p></td>
5536 <td>The unique bus name of the remote caller.</td>
5539 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
5540 <td>The object path that the method was invoked on.</td>
5543 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
5544 <td>The D-Bus interface name the method was invoked on.</td>
5547 <td><p><span class="term"><em class="parameter"><code>method_name</code></em> :</span></p></td>
5548 <td>The name of the method that was invoked.</td>
5551 <td><p><span class="term"><em class="parameter"><code>parameters</code></em> :</span></p></td>
5552 <td>A <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> tuple with parameters.</td>
5555 <td><p><span class="term"><em class="parameter"><code>invocation</code></em> :</span></p></td>
5556 <td>A <a class="link" href="GDBusMethodInvocation.html" title="GDBusMethodInvocation"><span class="type">GDBusMethodInvocation</span></a> object that can be used to return a value or error.</td>
5559 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5560 <td>The <em class="parameter"><code>user_data</code></em> <a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-register-object" title="g_dbus_connection_register_object ()"><code class="function">g_dbus_connection_register_object()</code></a>.</td>
5564 <p class="since">Since 2.26</p>
5567 <div class="refsect2">
5568 <a name="GDBusInterfaceGetPropertyFunc"></a><h3>GDBusInterfaceGetPropertyFunc ()</h3>
5569 <pre class="programlisting"><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="returnvalue">GVariant</span></a> * (*GDBusInterfaceGetPropertyFunc) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5570 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
5571 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
5572 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
5573 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
5574 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>,
5575 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
5577 The type of the <em class="parameter"><code>get_property</code></em> function in <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a>.
5579 <div class="variablelist"><table border="0">
5580 <col align="left" valign="top">
5583 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5584 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5587 <td><p><span class="term"><em class="parameter"><code>sender</code></em> :</span></p></td>
5588 <td>The unique bus name of the remote caller.</td>
5591 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
5592 <td>The object path that the method was invoked on.</td>
5595 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
5596 <td>The D-Bus interface name for the property.</td>
5599 <td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td>
5600 <td>The name of the property to get the value of.</td>
5603 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
5604 <td>Return location for error.</td>
5607 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5608 <td>The <em class="parameter"><code>user_data</code></em> <a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-register-object" title="g_dbus_connection_register_object ()"><code class="function">g_dbus_connection_register_object()</code></a>.</td>
5611 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5612 <td>A <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> with the value for <em class="parameter"><code>property_name</code></em> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if
5613 <em class="parameter"><code>error</code></em> is set. If the returned <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> is floating, it is
5614 consumed - otherwise its reference count is decreased by one.</td>
5618 <p class="since">Since 2.26</p>
5621 <div class="refsect2">
5622 <a name="GDBusInterfaceSetPropertyFunc"></a><h3>GDBusInterfaceSetPropertyFunc ()</h3>
5623 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> (*GDBusInterfaceSetPropertyFunc) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5624 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
5625 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
5626 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
5627 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
5628 <em class="parameter"><code><a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> *value</code></em>,
5629 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>,
5630 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
5632 The type of the <em class="parameter"><code>set_property</code></em> function in <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a>.
5634 <div class="variablelist"><table border="0">
5635 <col align="left" valign="top">
5638 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5639 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5642 <td><p><span class="term"><em class="parameter"><code>sender</code></em> :</span></p></td>
5643 <td>The unique bus name of the remote caller.</td>
5646 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
5647 <td>The object path that the method was invoked on.</td>
5650 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
5651 <td>The D-Bus interface name for the property.</td>
5654 <td><p><span class="term"><em class="parameter"><code>property_name</code></em> :</span></p></td>
5655 <td>The name of the property to get the value of.</td>
5658 <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td>
5659 <td>The value to set the property to.</td>
5662 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
5663 <td>Return location for error.</td>
5666 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5667 <td>The <em class="parameter"><code>user_data</code></em> <a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-register-object" title="g_dbus_connection_register_object ()"><code class="function">g_dbus_connection_register_object()</code></a>.</td>
5670 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5672 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the property was set to <em class="parameter"><code>value</code></em>, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if <em class="parameter"><code>error</code></em> is set.</td>
5676 <p class="since">Since 2.26</p>
5679 <div class="refsect2">
5680 <a name="g-dbus-connection-register-object"></a><h3>g_dbus_connection_register_object ()</h3>
5681 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> g_dbus_connection_register_object (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5682 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
5683 <em class="parameter"><code><a class="link" href="gio-D-Bus-Introspection-Data.html#GDBusInterfaceInfo"><span class="type">GDBusInterfaceInfo</span></a> *interface_info</code></em>,
5684 <em class="parameter"><code>const <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a> *vtable</code></em>,
5685 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
5686 <em class="parameter"><code><a href="./../glib/glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> user_data_free_func</code></em>,
5687 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
5689 Registers callbacks for exported objects at <em class="parameter"><code>object_path</code></em> with the
5690 D-Bus interface that is described in <em class="parameter"><code>interface_info</code></em>.
5693 Calls to functions in <em class="parameter"><code>vtable</code></em> (and <em class="parameter"><code>user_data_free_func</code></em>) will
5694 happen in the <GTKDOCLINK HREF="g-main-context-push-thread-default">thread-default main
5695 loop</GTKDOCLINK> of the thread you are calling this method from.
5698 Note that all <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> values passed to functions in <em class="parameter"><code>vtable</code></em> will match
5699 the signature given in <em class="parameter"><code>interface_info</code></em> - if a remote caller passes
5700 incorrect values, the <code class="literal">org.freedesktop.DBus.Error.InvalidArgs</code>
5701 is returned to the remote caller.
5704 Additionally, if the remote caller attempts to invoke methods or
5705 access properties not mentioned in <em class="parameter"><code>interface_info</code></em> the
5706 <code class="literal">org.freedesktop.DBus.Error.UnknownMethod</code> resp.
5707 <code class="literal">org.freedesktop.DBus.Error.InvalidArgs</code> errors
5708 are returned to the caller.
5711 It is considered a programming error if the
5712 <a class="link" href="GDBusConnection.html#GDBusInterfaceGetPropertyFunc" title="GDBusInterfaceGetPropertyFunc ()"><span class="type">GDBusInterfaceGetPropertyFunc</span></a> function in <em class="parameter"><code>vtable</code></em> returns a
5713 <a href="./../glib/glib/glib-GVariant.html#GVariant"><span class="type">GVariant</span></a> of incorrect type.
5716 If an existing callback is already registered at <em class="parameter"><code>object_path</code></em> and
5717 <em class="parameter"><code>interface_name</code></em>, then <em class="parameter"><code>error</code></em> is set to <a class="link" href="gio-GIOError.html#G-IO-ERROR-EXISTS:CAPS"><span class="type">G_IO_ERROR_EXISTS</span></a>.
5720 GDBus automatically implements the standard D-Bus interfaces
5721 org.freedesktop.DBus.Properties, org.freedesktop.DBus.Introspectable
5722 and org.freedesktop.Peer, so you don't have to implement those for
5723 the objects you export. You <span class="emphasis"><em>can</em></span> implement
5724 org.freedesktop.DBus.Properties yourself, e.g. to handle getting
5725 and setting of properties asynchronously.
5728 Note that the reference count on <em class="parameter"><code>interface_info</code></em> will be
5729 incremented by 1 (unless allocated statically, e.g. if the
5730 reference count is -1, see <a class="link" href="gio-D-Bus-Introspection-Data.html#g-dbus-interface-info-ref" title="g_dbus_interface_info_ref ()"><code class="function">g_dbus_interface_info_ref()</code></a>) for as long
5731 as the object is exported. Also note that <em class="parameter"><code>vtable</code></em> will be copied.
5734 See <a class="xref" href="GDBusConnection.html#gdbus-server" title="Example 2. D-Bus server example">Example 2, “D-Bus server example”</a> for an example of how to use this method.
5736 <div class="variablelist"><table border="0">
5737 <col align="left" valign="top">
5740 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5741 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5744 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
5745 <td>The object path to register at.</td>
5748 <td><p><span class="term"><em class="parameter"><code>interface_info</code></em> :</span></p></td>
5749 <td>Introspection data for the interface.</td>
5752 <td><p><span class="term"><em class="parameter"><code>vtable</code></em> :</span></p></td>
5753 <td>A <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a> to call into or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
5757 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5758 <td>Data to pass to functions in <em class="parameter"><code>vtable</code></em>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
5762 <td><p><span class="term"><em class="parameter"><code>user_data_free_func</code></em> :</span></p></td>
5763 <td>Function to call when the object path is unregistered.</td>
5766 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
5767 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
5770 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5771 <td>0 if <em class="parameter"><code>error</code></em> is set, otherwise a registration id (never 0)
5772 that can be used with <a class="link" href="GDBusConnection.html#g-dbus-connection-unregister-object" title="g_dbus_connection_unregister_object ()"><code class="function">g_dbus_connection_unregister_object()</code></a> .</td>
5776 <p class="since">Since 2.26</p>
5779 <div class="refsect2">
5780 <a name="g-dbus-connection-unregister-object"></a><h3>g_dbus_connection_unregister_object ()</h3>
5781 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_unregister_object (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5782 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> registration_id</code></em>);</pre>
5784 Unregisters an object.
5786 <div class="variablelist"><table border="0">
5787 <col align="left" valign="top">
5790 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5791 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5794 <td><p><span class="term"><em class="parameter"><code>registration_id</code></em> :</span></p></td>
5795 <td>A registration id obtained from <a class="link" href="GDBusConnection.html#g-dbus-connection-register-object" title="g_dbus_connection_register_object ()"><code class="function">g_dbus_connection_register_object()</code></a>.</td>
5798 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5800 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the object was unregistered, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</td>
5804 <p class="since">Since 2.26</p>
5807 <div class="refsect2">
5808 <a name="GDBusSubtreeVTable"></a><h3>GDBusSubtreeVTable</h3>
5809 <pre class="programlisting">typedef struct {
5810 GDBusSubtreeEnumerateFunc enumerate;
5811 GDBusSubtreeIntrospectFunc introspect;
5812 GDBusSubtreeDispatchFunc dispatch;
5813 } GDBusSubtreeVTable;
5816 Virtual table for handling subtrees registered with <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.
5818 <div class="variablelist"><table border="0">
5819 <col align="left" valign="top">
5822 <td><p><span class="term"><a class="link" href="GDBusConnection.html#GDBusSubtreeEnumerateFunc" title="GDBusSubtreeEnumerateFunc ()"><span class="type">GDBusSubtreeEnumerateFunc</span></a> <em class="structfield"><code><a name="GDBusSubtreeVTable.enumerate"></a>enumerate</code></em>;</span></p></td>
5823 <td>Function for enumerating child nodes.</td>
5826 <td><p><span class="term"><a class="link" href="GDBusConnection.html#GDBusSubtreeIntrospectFunc" title="GDBusSubtreeIntrospectFunc ()"><span class="type">GDBusSubtreeIntrospectFunc</span></a> <em class="structfield"><code><a name="GDBusSubtreeVTable.introspect"></a>introspect</code></em>;</span></p></td>
5827 <td>Function for introspecting a child node.</td>
5830 <td><p><span class="term"><a class="link" href="GDBusConnection.html#GDBusSubtreeDispatchFunc" title="GDBusSubtreeDispatchFunc ()"><span class="type">GDBusSubtreeDispatchFunc</span></a> <em class="structfield"><code><a name="GDBusSubtreeVTable.dispatch"></a>dispatch</code></em>;</span></p></td>
5831 <td>Function for dispatching a remote call on a child node.</td>
5835 <p class="since">Since 2.26</p>
5838 <div class="refsect2">
5839 <a name="GDBusSubtreeEnumerateFunc"></a><h3>GDBusSubtreeEnumerateFunc ()</h3>
5840 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> ** (*GDBusSubtreeEnumerateFunc) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5841 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
5842 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
5843 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
5845 The type of the <em class="parameter"><code>enumerate</code></em> function in <a class="link" href="GDBusConnection.html#GDBusSubtreeVTable" title="GDBusSubtreeVTable"><span class="type">GDBusSubtreeVTable</span></a>.
5848 This function is called when generating introspection data and also
5849 when preparing to dispatch incoming messages in the event that the
5850 <a class="link" href="GDBusConnection.html#G-DBUS-SUBTREE-FLAGS-DISPATCH-TO-UNENUMERATED-NODES:CAPS"><code class="literal">G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES</code></a> flag is not
5851 specified (ie: to verify that the object path is valid).
5854 Hierarchies are not supported; the items that you return should not
5855 contain the '/' character.
5858 The return value will be freed with <a href="./../glib/glib/glib-String-Utility-Functions.html#g-strfreev"><code class="function">g_strfreev()</code></a>.
5860 <div class="variablelist"><table border="0">
5861 <col align="left" valign="top">
5864 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5865 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5868 <td><p><span class="term"><em class="parameter"><code>sender</code></em> :</span></p></td>
5869 <td>The unique bus name of the remote caller.</td>
5872 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
5873 <td>The object path that was registered with <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.</td>
5876 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5877 <td>The <em class="parameter"><code>user_data</code></em> <a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.</td>
5880 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5881 <td>A newly allocated array of strings for node names that are children of <em class="parameter"><code>object_path</code></em>.</td>
5885 <p class="since">Since 2.26</p>
5888 <div class="refsect2">
5889 <a name="GDBusSubtreeIntrospectFunc"></a><h3>GDBusSubtreeIntrospectFunc ()</h3>
5890 <pre class="programlisting"><a class="link" href="gio-D-Bus-Introspection-Data.html#GDBusInterfaceInfo"><span class="returnvalue">GDBusInterfaceInfo</span></a> ** (*GDBusSubtreeIntrospectFunc) (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5891 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
5892 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
5893 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *node</code></em>,
5894 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
5896 The type of the <em class="parameter"><code>introspect</code></em> function in <a class="link" href="GDBusConnection.html#GDBusSubtreeVTable" title="GDBusSubtreeVTable"><span class="type">GDBusSubtreeVTable</span></a>.
5899 Subtrees are flat. <em class="parameter"><code>node</code></em>, if non-<a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, is always exactly one
5900 segment of the object path (ie: it never contains a slash).
5903 This function should return <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to indicate that there is no object
5907 If this function returns non-<a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, the return value is expected to
5908 be a <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated array of pointers to <a class="link" href="gio-D-Bus-Introspection-Data.html#GDBusInterfaceInfo"><span class="type">GDBusInterfaceInfo</span></a>
5909 structures describing the interfaces implemented by <em class="parameter"><code>node</code></em>. This
5910 array will have <a class="link" href="gio-D-Bus-Introspection-Data.html#g-dbus-interface-info-unref" title="g_dbus_interface_info_unref ()"><code class="function">g_dbus_interface_info_unref()</code></a> called on each item
5911 before being freed with <a href="./../glib/glib/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>.
5914 The difference between returning <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> and an array containing zero
5915 items is that the standard DBus interfaces will returned to the
5916 remote introspector in the empty array case, but not in the <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
5919 <div class="variablelist"><table border="0">
5920 <col align="left" valign="top">
5923 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5924 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5927 <td><p><span class="term"><em class="parameter"><code>sender</code></em> :</span></p></td>
5928 <td>The unique bus name of the remote caller.</td>
5931 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
5932 <td>The object path that was registered with <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.</td>
5935 <td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
5936 <td>A node that is a child of <em class="parameter"><code>object_path</code></em> (relative to <em class="parameter"><code>object_path</code></em>) or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> for the root of the subtree.</td>
5939 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5940 <td>The <em class="parameter"><code>user_data</code></em> <a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.</td>
5943 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5944 <td>A <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>-terminated array of pointers to <a class="link" href="gio-D-Bus-Introspection-Data.html#GDBusInterfaceInfo"><span class="type">GDBusInterfaceInfo</span></a>, or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
5948 <p class="since">Since 2.26</p>
5951 <div class="refsect2">
5952 <a name="GDBusSubtreeDispatchFunc"></a><h3>GDBusSubtreeDispatchFunc ()</h3>
5953 <pre class="programlisting">const <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="returnvalue">GDBusInterfaceVTable</span></a> * (*GDBusSubtreeDispatchFunc)
5954 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
5955 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *sender</code></em>,
5956 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
5957 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *interface_name</code></em>,
5958 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *node</code></em>,
5959 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> *out_user_data</code></em>,
5960 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
5962 The type of the <em class="parameter"><code>dispatch</code></em> function in <a class="link" href="GDBusConnection.html#GDBusSubtreeVTable" title="GDBusSubtreeVTable"><span class="type">GDBusSubtreeVTable</span></a>.
5965 Subtrees are flat. <em class="parameter"><code>node</code></em>, if non-<a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, is always exactly one
5966 segment of the object path (ie: it never contains a slash).
5968 <div class="variablelist"><table border="0">
5969 <col align="left" valign="top">
5972 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
5973 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
5976 <td><p><span class="term"><em class="parameter"><code>sender</code></em> :</span></p></td>
5977 <td>The unique bus name of the remote caller.</td>
5980 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
5981 <td>The object path that was registered with <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.</td>
5984 <td><p><span class="term"><em class="parameter"><code>interface_name</code></em> :</span></p></td>
5985 <td>The D-Bus interface name that the method call or property access is for.</td>
5988 <td><p><span class="term"><em class="parameter"><code>node</code></em> :</span></p></td>
5989 <td>A node that is a child of <em class="parameter"><code>object_path</code></em> (relative to <em class="parameter"><code>object_path</code></em>) or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> for the root of the subtree.</td>
5992 <td><p><span class="term"><em class="parameter"><code>out_user_data</code></em> :</span></p></td>
5993 <td>Return location for user data to pass to functions in the returned <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a> (never <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>).</td>
5996 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
5997 <td>The <em class="parameter"><code>user_data</code></em> <a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.</td>
6000 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
6001 <td>A <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a> or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if you don't want to handle the methods.</td>
6005 <p class="since">Since 2.26</p>
6008 <div class="refsect2">
6009 <a name="GDBusSubtreeFlags"></a><h3>enum GDBusSubtreeFlags</h3>
6010 <pre class="programlisting">typedef enum {
6011 G_DBUS_SUBTREE_FLAGS_NONE = 0,
6012 G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES = (1<<0)
6013 } GDBusSubtreeFlags;
6016 Flags passed to <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.
6018 <div class="variablelist"><table border="0">
6019 <col align="left" valign="top">
6022 <td><p><a name="G-DBUS-SUBTREE-FLAGS-NONE:CAPS"></a><span class="term"><code class="literal">G_DBUS_SUBTREE_FLAGS_NONE</code></span></p></td>
6027 <td><p><a name="G-DBUS-SUBTREE-FLAGS-DISPATCH-TO-UNENUMERATED-NODES:CAPS"></a><span class="term"><code class="literal">G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES</code></span></p></td>
6028 <td>Method calls to objects not in the enumerated range
6029 will still be dispatched. This is useful if you want
6030 to dynamically spawn objects in the subtree.
6035 <p class="since">Since 2.26</p>
6038 <div class="refsect2">
6039 <a name="g-dbus-connection-register-subtree"></a><h3>g_dbus_connection_register_subtree ()</h3>
6040 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a> g_dbus_connection_register_subtree (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
6041 <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *object_path</code></em>,
6042 <em class="parameter"><code>const <a class="link" href="GDBusConnection.html#GDBusSubtreeVTable" title="GDBusSubtreeVTable"><span class="type">GDBusSubtreeVTable</span></a> *vtable</code></em>,
6043 <em class="parameter"><code><a class="link" href="GDBusConnection.html#GDBusSubtreeFlags" title="enum GDBusSubtreeFlags"><span class="type">GDBusSubtreeFlags</span></a> flags</code></em>,
6044 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
6045 <em class="parameter"><code><a href="./../glib/glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> user_data_free_func</code></em>,
6046 <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
6048 Registers a whole subtree of <span class="quote">“<span class="quote">dynamic</span>”</span> objects.
6051 The <em class="parameter"><code>enumerate</code></em> and <em class="parameter"><code>introspection</code></em> functions in <em class="parameter"><code>vtable</code></em> are used to
6052 convey, to remote callers, what nodes exist in the subtree rooted
6053 by <em class="parameter"><code>object_path</code></em>.
6056 When handling remote calls into any node in the subtree, first the
6057 <em class="parameter"><code>enumerate</code></em> function is used to check if the node exists. If the node exists
6058 or the <a class="link" href="GDBusConnection.html#G-DBUS-SUBTREE-FLAGS-DISPATCH-TO-UNENUMERATED-NODES:CAPS"><span class="type">G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES</span></a> flag is set
6059 the <em class="parameter"><code>introspection</code></em> function is used to check if the node supports the
6060 requested method. If so, the <em class="parameter"><code>dispatch</code></em> function is used to determine
6061 where to dispatch the call. The collected <a class="link" href="GDBusConnection.html#GDBusInterfaceVTable" title="GDBusInterfaceVTable"><span class="type">GDBusInterfaceVTable</span></a> and
6062 <a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> will be used to call into the interface vtable for processing
6066 All calls into user-provided code will be invoked in the <GTKDOCLINK HREF="g-main-context-push-thread-default">thread-default main
6067 loop</GTKDOCLINK> of the thread you are calling this method from.
6070 If an existing subtree is already registered at <em class="parameter"><code>object_path</code></em> or
6071 then <em class="parameter"><code>error</code></em> is set to <a class="link" href="gio-GIOError.html#G-IO-ERROR-EXISTS:CAPS"><span class="type">G_IO_ERROR_EXISTS</span></a>.
6074 Note that it is valid to register regular objects (using
6075 <a class="link" href="GDBusConnection.html#g-dbus-connection-register-object" title="g_dbus_connection_register_object ()"><code class="function">g_dbus_connection_register_object()</code></a>) in a subtree registered with
6076 <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a> - if so, the subtree handler
6077 is tried as the last resort. One way to think about a subtree
6078 handler is to consider it a <span class="quote">“<span class="quote">fallback handler</span>”</span>
6079 for object paths not registered via <a class="link" href="GDBusConnection.html#g-dbus-connection-register-object" title="g_dbus_connection_register_object ()"><code class="function">g_dbus_connection_register_object()</code></a>
6083 Note that <em class="parameter"><code>vtable</code></em> will be copied so you cannot change it after
6087 See <a class="xref" href="GDBusConnection.html#gdbus-subtree-server" title="Example 3. D-Bus subtree example">Example 3, “D-Bus subtree example”</a> for an example of how to use this method.
6089 <div class="variablelist"><table border="0">
6090 <col align="left" valign="top">
6093 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
6094 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
6097 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
6098 <td>The object path to register the subtree at.</td>
6101 <td><p><span class="term"><em class="parameter"><code>vtable</code></em> :</span></p></td>
6102 <td>A <a class="link" href="GDBusConnection.html#GDBusSubtreeVTable" title="GDBusSubtreeVTable"><span class="type">GDBusSubtreeVTable</span></a> to enumerate, introspect and dispatch nodes in the subtree.</td>
6105 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
6106 <td>Flags used to fine tune the behavior of the subtree.</td>
6109 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
6110 <td>Data to pass to functions in <em class="parameter"><code>vtable</code></em>.</td>
6113 <td><p><span class="term"><em class="parameter"><code>user_data_free_func</code></em> :</span></p></td>
6114 <td>Function to call when the subtree is unregistered.</td>
6117 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
6118 <td>Return location for error or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
6121 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
6122 <td>0 if <em class="parameter"><code>error</code></em> is set, otherwise a subtree registration id (never 0)
6123 that can be used with <a class="link" href="GDBusConnection.html#g-dbus-connection-unregister-subtree" title="g_dbus_connection_unregister_subtree ()"><code class="function">g_dbus_connection_unregister_subtree()</code></a> .</td>
6127 <p class="since">Since 2.26</p>
6130 <div class="refsect2">
6131 <a name="g-dbus-connection-unregister-subtree"></a><h3>g_dbus_connection_unregister_subtree ()</h3>
6132 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> g_dbus_connection_unregister_subtree
6133 (<em class="parameter"><code><a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection</code></em>,
6134 <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a> registration_id</code></em>);</pre>
6136 Unregisters a subtree.
6138 <div class="variablelist"><table border="0">
6139 <col align="left" valign="top">
6142 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
6143 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.</td>
6146 <td><p><span class="term"><em class="parameter"><code>registration_id</code></em> :</span></p></td>
6147 <td>A subtree registration id obtained from <a class="link" href="GDBusConnection.html#g-dbus-connection-register-subtree" title="g_dbus_connection_register_subtree ()"><code class="function">g_dbus_connection_register_subtree()</code></a>.</td>
6150 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
6152 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the subtree was unregistered, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</td>
6156 <p class="since">Since 2.26</p>
6159 <div class="refsect1">
6160 <a name="GDBusConnection.property-details"></a><h2>Property Details</h2>
6161 <div class="refsect2">
6162 <a name="GDBusConnection--address"></a><h3>The <code class="literal">"address"</code> property</h3>
6163 <pre class="programlisting"> "address" <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Write / Construct Only</pre>
6165 A D-Bus address specifying potential endpoints that can be used
6166 when establishing the connection.
6168 <p>Default value: NULL</p>
6169 <p class="since">Since 2.26</p>
6172 <div class="refsect2">
6173 <a name="GDBusConnection--authentication-observer"></a><h3>The <code class="literal">"authentication-observer"</code> property</h3>
6174 <pre class="programlisting"> "authentication-observer" <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a>* : Write / Construct Only</pre>
6176 A <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> object to assist in the authentication process or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.
6178 <p class="since">Since 2.26</p>
6181 <div class="refsect2">
6182 <a name="GDBusConnection--capabilities"></a><h3>The <code class="literal">"capabilities"</code> property</h3>
6183 <pre class="programlisting"> "capabilities" <a class="link" href="GDBusConnection.html#GDBusCapabilityFlags" title="enum GDBusCapabilityFlags"><span class="type">GDBusCapabilityFlags</span></a> : Read</pre>
6185 Flags from the <a class="link" href="GDBusConnection.html#GDBusCapabilityFlags" title="enum GDBusCapabilityFlags"><span class="type">GDBusCapabilityFlags</span></a> enumeration
6186 representing connection features negotiated with the other peer.
6188 <p class="since">Since 2.26</p>
6191 <div class="refsect2">
6192 <a name="GDBusConnection--closed"></a><h3>The <code class="literal">"closed"</code> property</h3>
6193 <pre class="programlisting"> "closed" <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read</pre>
6195 A boolean specifying whether the connection has been closed.
6197 <p>Default value: FALSE</p>
6198 <p class="since">Since 2.26</p>
6201 <div class="refsect2">
6202 <a name="GDBusConnection--exit-on-close"></a><h3>The <code class="literal">"exit-on-close"</code> property</h3>
6203 <pre class="programlisting"> "exit-on-close" <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> : Read / Write</pre>
6205 A boolean specifying whether the process will be terminated (by
6206 calling <code class="literal">raise(SIGTERM)</code>) if the connection
6207 is closed by the remote peer.
6210 Note that <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> objects returned by <a class="link" href="GDBusConnection.html#g-bus-get-finish" title="g_bus_get_finish ()"><code class="function">g_bus_get_finish()</code></a> and
6211 <a class="link" href="GDBusConnection.html#g-bus-get-sync" title="g_bus_get_sync ()"><code class="function">g_bus_get_sync()</code></a> will (usually) have this property set to <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.
6213 <p>Default value: FALSE</p>
6214 <p class="since">Since 2.26</p>
6217 <div class="refsect2">
6218 <a name="GDBusConnection--flags"></a><h3>The <code class="literal">"flags"</code> property</h3>
6219 <pre class="programlisting"> "flags" <a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> : Write / Construct Only</pre>
6221 Flags from the <a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> enumeration.
6223 <p class="since">Since 2.26</p>
6226 <div class="refsect2">
6227 <a name="GDBusConnection--guid"></a><h3>The <code class="literal">"guid"</code> property</h3>
6228 <pre class="programlisting"> "guid" <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write / Construct Only</pre>
6230 The GUID of the peer performing the role of server when
6234 If you are constructing a <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> and pass
6235 <a class="link" href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-SERVER:CAPS"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER</code></a> in the
6236 <a class="link" href="GDBusConnection.html#GDBusConnection--flags" title='The "flags" property'><span class="type">"flags"</span></a> property then you MUST also set this
6237 property to a valid guid.
6240 If you are constructing a <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> and pass
6241 <a class="link" href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-CLIENT:CAPS"><code class="literal">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT</code></a> in the
6242 <a class="link" href="GDBusConnection.html#GDBusConnection--flags" title='The "flags" property'><span class="type">"flags"</span></a> property you will be able to read the GUID
6243 of the other peer here after the connection has been successfully
6246 <p>Default value: NULL</p>
6247 <p class="since">Since 2.26</p>
6250 <div class="refsect2">
6251 <a name="GDBusConnection--stream"></a><h3>The <code class="literal">"stream"</code> property</h3>
6252 <pre class="programlisting"> "stream" <a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a>* : Read / Write / Construct Only</pre>
6254 The underlying <a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a> used for I/O.
6257 If this is passed on construction and is a <a class="link" href="GSocketConnection.html" title="GSocketConnection"><span class="type">GSocketConnection</span></a>,
6258 then the corresponding <a class="link" href="GSocket.html" title="GSocket"><span class="type">GSocket</span></a> will be put into non-blocking mode.
6261 While the <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> is active, it will interact with this
6262 stream from a worker thread, so it is not safe to interact with
6263 the stream directly.
6265 <p class="since">Since 2.26</p>
6268 <div class="refsect2">
6269 <a name="GDBusConnection--unique-name"></a><h3>The <code class="literal">"unique-name"</code> property</h3>
6270 <pre class="programlisting"> "unique-name" <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read</pre>
6272 The unique name as assigned by the message bus or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the
6273 connection is not open or not a message bus connection.
6275 <p>Default value: NULL</p>
6276 <p class="since">Since 2.26</p>
6279 <div class="refsect1">
6280 <a name="GDBusConnection.signal-details"></a><h2>Signal Details</h2>
6281 <div class="refsect2">
6282 <a name="GDBusConnection-closed"></a><h3>The <code class="literal">"closed"</code> signal</h3>
6283 <pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection,
6284 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> remote_peer_vanished,
6285 <a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error,
6286 <a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="./../gobject/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a></pre>
6288 Emitted when the connection is closed.
6291 The cause of this event can be
6293 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
6294 <li class="listitem"><p>
6295 If <a class="link" href="GDBusConnection.html#g-dbus-connection-close" title="g_dbus_connection_close ()"><code class="function">g_dbus_connection_close()</code></a> is called. In this case
6296 <em class="parameter"><code>remote_peer_vanished</code></em> is set to <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> and <em class="parameter"><code>error</code></em> is <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.
6298 <li class="listitem"><p>
6299 If the remote peer closes the connection. In this case
6300 <em class="parameter"><code>remote_peer_vanished</code></em> is set to <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> and <em class="parameter"><code>error</code></em> is set.
6302 <li class="listitem"><p>
6303 If the remote peer sends invalid or malformed data. In this
6304 case <em class="parameter"><code>remote_peer_vanished</code></em> is set to <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> and <em class="parameter"><code>error</code></em>
6311 Upon receiving this signal, you should give up your reference to
6312 <em class="parameter"><code>connection</code></em>. You are guaranteed that this signal is emitted only
6315 <div class="variablelist"><table border="0">
6316 <col align="left" valign="top">
6319 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
6320 <td>The <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> emitting the signal.</td>
6323 <td><p><span class="term"><em class="parameter"><code>remote_peer_vanished</code></em> :</span></p></td>
6325 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>connection</code></em> is closed because the
6326 remote peer closed its end of the connection.</td>
6329 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
6330 <td>A <a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> with more details about the event or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
6333 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
6334 <td>user data set when the signal handler was connected.</td>
6338 <p class="since">Since 2.26</p>
6341 <div class="footnotes">
6342 <br><hr width="100" align="left">
6343 <div class="footnote"><p><sup>[<a id="ftn.id926780" href="#id926780" class="para">1</a>] </sup>
6344 This is so that <a class="link" href="GDBusConnection.html#g-bus-get" title="g_bus_get ()"><code class="function">g_bus_get()</code></a> and <a class="link" href="GDBusConnection.html#g-bus-get-sync" title="g_bus_get_sync ()"><code class="function">g_bus_get_sync()</code></a> can safely return the
6345 same <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> when called from any thread.
6349 <div class="footer">
6351 Generated by GTK-Doc V1.18</div>