Tizen 2.1 base
[platform/upstream/glib2.0.git] / docs / reference / gio / html / GDBusConnection.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
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">
13 </head>
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">
16 <tr valign="middle">
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>
22 </tr>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#GDBusConnection.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#GDBusConnection.description" class="shortcut">Description</a>
27                    | 
28                   <a href="#GDBusConnection.object-hierarchy" class="shortcut">Object Hierarchy</a>
29                    | 
30                   <a href="#GDBusConnection.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
31                    | 
32                   <a href="#GDBusConnection.properties" class="shortcut">Properties</a>
33                    | 
34                   <a href="#GDBusConnection.signals" class="shortcut">Signals</a>
35 </td></tr>
36 </table>
37 <div class="refentry">
38 <a name="GDBusConnection"></a><div class="titlepage"></div>
39 <div class="refnamediv"><table width="100%"><tr>
40 <td valign="top">
41 <h2><span class="refentrytitle"><a name="GDBusConnection.top_of_page"></a>GDBusConnection</span></h2>
42 <p>GDBusConnection — D-Bus Connections</p>
43 </td>
44 <td valign="top" align="right"></td>
45 </tr></table></div>
46 <div class="refsynopsisdiv">
47 <a name="GDBusConnection.synopsis"></a><h2>Synopsis</h2>
48 <pre class="synopsis">
49 #include &lt;gio/gio.h&gt;
50
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>);
313 </pre>
314 </div>
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>
319    +----GDBusConnection
320 </pre>
321 </div>
322 <div class="refsect1">
323 <a name="GDBusConnection.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
324 <p>
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>
327 </div>
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
340 </pre>
341 </div>
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>
346 </pre>
347 </div>
348 <div class="refsect1">
349 <a name="GDBusConnection.description"></a><h2>Description</h2>
350 <p>
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>.
355 </p>
356 <p>
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.
360 </p>
361 <p>
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>.
365 </p>
366 <p>
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
372 connection.
373 </p>
374 <p>
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>.
383 </p>
384 <p>
385 </p>
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">
390     <tbody>
391       <tr>
392         <td class="listing_lines" align="right"><pre>1
393 2
394 3
395 4
396 5
397 6
398 7
399 8
400 9
401 10
402 11
403 12
404 13
405 14
406 15
407 16
408 17
409 18
410 19
411 20
412 21
413 22
414 23
415 24
416 25
417 26
418 27
419 28
420 29
421 30
422 31
423 32
424 33
425 34
426 35
427 36
428 37
429 38
430 39
431 40
432 41
433 42
434 43
435 44
436 45
437 46
438 47
439 48
440 49
441 50
442 51
443 52
444 53
445 54
446 55
447 56
448 57
449 58
450 59
451 60
452 61
453 62
454 63
455 64
456 65
457 66
458 67
459 68
460 69
461 70
462 71
463 72
464 73
465 74
466 75
467 76
468 77
469 78
470 79
471 80
472 81
473 82
474 83
475 84
476 85
477 86
478 87
479 88
480 89
481 90
482 91
483 92
484 93
485 94
486 95
487 96
488 97
489 98
490 99
491 100
492 101
493 102
494 103
495 104
496 105
497 106
498 107
499 108
500 109
501 110
502 111
503 112
504 113
505 114
506 115
507 116
508 117
509 118
510 119
511 120
512 121
513 122
514 123
515 124
516 125
517 126
518 127
519 128
520 129
521 130
522 131
523 132
524 133
525 134
526 135
527 136
528 137
529 138
530 139
531 140
532 141
533 142
534 143
535 144
536 145
537 146
538 147
539 148
540 149
541 150
542 151
543 152
544 153
545 154
546 155
547 156
548 157
549 158
550 159
551 160
552 161
553 162
554 163
555 164
556 165
557 166
558 167
559 168
560 169
561 170
562 171
563 172
564 173
565 174
566 175
567 176
568 177
569 178
570 179
571 180
572 181
573 182
574 183
575 184
576 185
577 186
578 187
579 188
580 189
581 190
582 191
583 192
584 193
585 194
586 195
587 196
588 197
589 198
590 199
591 200
592 201
593 202
594 203
595 204
596 205
597 206
598 207
599 208
600 209
601 210
602 211
603 212
604 213
605 214
606 215
607 216
608 217
609 218
610 219
611 220
612 221
613 222
614 223
615 224
616 225
617 226
618 227
619 228
620 229
621 230
622 231
623 232
624 233
625 234
626 235
627 236
628 237
629 238
630 239
631 240
632 241
633 242
634 243
635 244
636 245
637 246
638 247
639 248
640 249
641 250
642 251
643 252
644 253
645 254
646 255
647 256
648 257
649 258
650 259
651 260
652 261
653 262
654 263
655 264
656 265
657 266
658 267
659 268
660 269
661 270
662 271
663 272
664 273
665 274
666 275
667 276
668 277
669 278
670 279
671 280
672 281
673 282
674 283
675 284
676 285
677 286
678 287
679 288
680 289
681 290
682 291
683 292
684 293
685 294
686 295
687 296
688 297
689 298
690 299
691 300
692 301
693 302
694 303
695 304
696 305
697 306
698 307
699 308
700 309
701 310
702 311
703 312
704 313
705 314
706 315
707 316
708 317
709 318
710 319
711 320
712 321
713 322
714 323
715 324
716 325
717 326
718 327
719 328
720 329
721 330
722 331
723 332
724 333
725 334
726 335
727 336
728 337
729 338
730 339
731 340
732 341
733 342
734 343
735 344
736 345
737 346
738 347
739 348
740 349
741 350
742 351
743 352
744 353
745 354
746 355
747 356
748 357
749 358
750 359
751 360
752 361
753 362
754 363
755 364
756 365
757 366
758 367
759 368
760 369
761 370
762 371
763 372
764 373
765 374
766 375
767 376
768 377
769 378
770 379
771 380
772 381
773 382
774 383
775 384
776 385
777 386
778 387
779 388
780 389
781 390
782 391
783 392</pre></td>
784         <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;gio/gio.h&gt;</span>
785 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;stdlib.h&gt;</span>
786
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">&lt;gio/gunixfdlist.h&gt;</span>
789 <span class="comment">/* For STDOUT_FILENO */</span>
790 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;unistd.h&gt;</span>
791 <span class="preproc">#endif</span>
792
793 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
794
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>
796
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">"&lt;node&gt;"</span>
800 <span class="normal">  </span><span class="string">"  &lt;interface name='org.gtk.GDBus.TestInterface'&gt;"</span>
801 <span class="normal">  </span><span class="string">"    &lt;annotation name='org.gtk.GDBus.Annotation' value='OnInterface'/&gt;"</span>
802 <span class="normal">  </span><span class="string">"    &lt;annotation name='org.gtk.GDBus.Annotation' value='AlsoOnInterface'/&gt;"</span>
803 <span class="normal">  </span><span class="string">"    &lt;method name='HelloWorld'&gt;"</span>
804 <span class="normal">  </span><span class="string">"      &lt;annotation name='org.gtk.GDBus.Annotation' value='OnMethod'/&gt;"</span>
805 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='greeting' direction='in'/&gt;"</span>
806 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='response' direction='out'/&gt;"</span>
807 <span class="normal">  </span><span class="string">"    &lt;/method&gt;"</span>
808 <span class="normal">  </span><span class="string">"    &lt;method name='EmitSignal'&gt;"</span>
809 <span class="normal">  </span><span class="string">"      &lt;arg type='d' name='speed_in_mph' direction='in'&gt;"</span>
810 <span class="normal">  </span><span class="string">"        &lt;annotation name='org.gtk.GDBus.Annotation' value='OnArg'/&gt;"</span>
811 <span class="normal">  </span><span class="string">"      &lt;/arg&gt;"</span>
812 <span class="normal">  </span><span class="string">"    &lt;/method&gt;"</span>
813 <span class="normal">  </span><span class="string">"    &lt;method name='GimmeStdout'/&gt;"</span>
814 <span class="normal">  </span><span class="string">"    &lt;signal name='VelocityChanged'&gt;"</span>
815 <span class="normal">  </span><span class="string">"      &lt;annotation name='org.gtk.GDBus.Annotation' value='Onsignal'/&gt;"</span>
816 <span class="normal">  </span><span class="string">"      &lt;arg type='d' name='speed_in_mph'/&gt;"</span>
817 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='speed_as_string'&gt;"</span>
818 <span class="normal">  </span><span class="string">"        &lt;annotation name='org.gtk.GDBus.Annotation' value='OnArg_NonFirst'/&gt;"</span>
819 <span class="normal">  </span><span class="string">"      &lt;/arg&gt;"</span>
820 <span class="normal">  </span><span class="string">"    &lt;/signal&gt;"</span>
821 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='FluxCapicitorName' access='read'&gt;"</span>
822 <span class="normal">  </span><span class="string">"      &lt;annotation name='org.gtk.GDBus.Annotation' value='OnProperty'&gt;"</span>
823 <span class="normal">  </span><span class="string">"        &lt;annotation name='org.gtk.GDBus.Annotation' value='OnAnnotation_YesThisIsCrazy'/&gt;"</span>
824 <span class="normal">  </span><span class="string">"      &lt;/annotation&gt;"</span>
825 <span class="normal">  </span><span class="string">"    &lt;/property&gt;"</span>
826 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='Title' access='readwrite'/&gt;"</span>
827 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='ReadingAlwaysThrowsError' access='read'/&gt;"</span>
828 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='WritingAlwaysThrowsError' access='readwrite'/&gt;"</span>
829 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='OnlyWritable' access='write'/&gt;"</span>
830 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='Foo' access='read'/&gt;"</span>
831 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='Bar' access='read'/&gt;"</span>
832 <span class="normal">  </span><span class="string">"  &lt;/interface&gt;"</span>
833 <span class="normal">  </span><span class="string">"&lt;/node&gt;"</span><span class="symbol">;</span>
834
835 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
836
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>
850
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">"(&amp;s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">greeting</span><span class="symbol">);</span>
852
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>
887
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">&amp;</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>
890
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">&amp;</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>
903
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">&amp;</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>
914
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">&amp;</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>
919
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>
922
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">&amp;</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>
930
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 &gt;= 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>
948
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>
950
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>
952
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>
963
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>
996
997 <span class="normal">  </span><span class="keyword">return</span><span class="normal"> ret</span><span class="symbol">;</span>
998 <span class="cbracket">}</span>
999
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>
1016
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>
1019
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">&amp;</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>
1052
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>
1055
1056
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>
1064
1065 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1066
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>
1074
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>
1076
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">&amp;</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>
1099
1100
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>
1103
1104 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1105
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>
1112
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">-&gt;</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">&amp;</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">&gt;</span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
1121
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>
1127
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>
1134
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>
1142
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>
1148
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>
1150
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>
1157
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>
1166
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>
1169
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>
1171
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>
1173
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>
1176       </tr>
1177     </tbody>
1178   </table>
1179 </div>
1180
1181 </div>
1182 <p><br class="example-break">
1183 </p>
1184 <p>
1185 </p>
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">
1190     <tbody>
1191       <tr>
1192         <td class="listing_lines" align="right"><pre>1
1193 2
1194 3
1195 4
1196 5
1197 6
1198 7
1199 8
1200 9
1201 10
1202 11
1203 12
1204 13
1205 14
1206 15
1207 16
1208 17
1209 18
1210 19
1211 20
1212 21
1213 22
1214 23
1215 24
1216 25
1217 26
1218 27
1219 28
1220 29
1221 30
1222 31
1223 32
1224 33
1225 34
1226 35
1227 36
1228 37
1229 38
1230 39
1231 40
1232 41
1233 42
1234 43
1235 44
1236 45
1237 46
1238 47
1239 48
1240 49
1241 50
1242 51
1243 52
1244 53
1245 54
1246 55
1247 56
1248 57
1249 58
1250 59
1251 60
1252 61
1253 62
1254 63
1255 64
1256 65
1257 66
1258 67
1259 68
1260 69
1261 70
1262 71
1263 72
1264 73
1265 74
1266 75
1267 76
1268 77
1269 78
1270 79
1271 80
1272 81
1273 82
1274 83
1275 84
1276 85
1277 86
1278 87
1279 88
1280 89
1281 90
1282 91
1283 92
1284 93
1285 94
1286 95
1287 96
1288 97
1289 98
1290 99
1291 100
1292 101
1293 102
1294 103
1295 104
1296 105
1297 106
1298 107
1299 108
1300 109
1301 110
1302 111
1303 112
1304 113
1305 114
1306 115
1307 116
1308 117
1309 118
1310 119
1311 120
1312 121
1313 122
1314 123
1315 124
1316 125
1317 126
1318 127
1319 128
1320 129
1321 130
1322 131
1323 132
1324 133
1325 134
1326 135
1327 136
1328 137
1329 138
1330 139
1331 140
1332 141
1333 142
1334 143
1335 144
1336 145
1337 146
1338 147
1339 148
1340 149
1341 150
1342 151
1343 152
1344 153
1345 154
1346 155
1347 156
1348 157
1349 158
1350 159
1351 160
1352 161
1353 162
1354 163
1355 164
1356 165
1357 166
1358 167
1359 168
1360 169
1361 170
1362 171
1363 172
1364 173
1365 174
1366 175
1367 176
1368 177
1369 178
1370 179
1371 180
1372 181
1373 182
1374 183
1375 184
1376 185
1377 186
1378 187
1379 188
1380 189
1381 190
1382 191
1383 192
1384 193
1385 194
1386 195
1387 196
1388 197
1389 198
1390 199
1391 200
1392 201
1393 202
1394 203
1395 204
1396 205
1397 206
1398 207
1399 208
1400 209
1401 210
1402 211
1403 212
1404 213
1405 214
1406 215
1407 216
1408 217
1409 218
1410 219
1411 220
1412 221
1413 222
1414 223
1415 224
1416 225
1417 226
1418 227
1419 228
1420 229
1421 230
1422 231
1423 232
1424 233
1425 234
1426 235
1427 236
1428 237
1429 238
1430 239
1431 240
1432 241
1433 242
1434 243
1435 244
1436 245
1437 246
1438 247
1439 248
1440 249
1441 250
1442 251
1443 252
1444 253
1445 254
1446 255
1447 256
1448 257
1449 258
1450 259
1451 260
1452 261
1453 262
1454 263
1455 264
1456 265
1457 266
1458 267
1459 268
1460 269
1461 270
1462 271
1463 272
1464 273
1465 274
1466 275
1467 276
1468 277
1469 278
1470 279
1471 280
1472 281
1473 282
1474 283
1475 284
1476 285
1477 286
1478 287
1479 288
1480 289
1481 290
1482 291
1483 292
1484 293
1485 294
1486 295
1487 296
1488 297
1489 298
1490 299
1491 300
1492 301
1493 302
1494 303
1495 304
1496 305
1497 306
1498 307
1499 308
1500 309
1501 310
1502 311
1503 312
1504 313
1505 314
1506 315
1507 316
1508 317
1509 318
1510 319
1511 320
1512 321
1513 322
1514 323
1515 324
1516 325
1517 326
1518 327
1519 328
1520 329
1521 330
1522 331
1523 332
1524 333
1525 334
1526 335
1527 336
1528 337
1529 338
1530 339
1531 340
1532 341
1533 342
1534 343
1535 344
1536 345
1537 346
1538 347
1539 348
1540 349
1541 350
1542 351
1543 352
1544 353
1545 354
1546 355
1547 356
1548 357
1549 358
1550 359
1551 360
1552 361
1553 362
1554 363
1555 364
1556 365
1557 366
1558 367
1559 368
1560 369
1561 370
1562 371
1563 372
1564 373
1565 374
1566 375
1567 376
1568 377
1569 378
1570 379
1571 380
1572 381
1573 382
1574 383
1575 384
1576 385
1577 386
1578 387
1579 388
1580 389
1581 390
1582 391
1583 392
1584 393
1585 394
1586 395
1587 396
1588 397
1589 398
1590 399
1591 400</pre></td>
1592         <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;gio/gio.h&gt;</span>
1593 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;stdlib.h&gt;</span>
1594 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;string.h&gt;</span>
1595
1596 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1597
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>
1602
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">"&lt;node&gt;"</span>
1606 <span class="normal">  </span><span class="string">"  &lt;interface name='org.gtk.GDBus.Example.Manager'&gt;"</span>
1607 <span class="normal">  </span><span class="string">"    &lt;method name='Hello'&gt;"</span>
1608 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='greeting' direction='in'/&gt;"</span>
1609 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='response' direction='out'/&gt;"</span>
1610 <span class="normal">  </span><span class="string">"    &lt;/method&gt;"</span>
1611 <span class="normal">  </span><span class="string">"  &lt;/interface&gt;"</span>
1612 <span class="normal">  </span><span class="string">"  &lt;interface name='org.gtk.GDBus.Example.Block'&gt;"</span>
1613 <span class="normal">  </span><span class="string">"    &lt;method name='Hello'&gt;"</span>
1614 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='greeting' direction='in'/&gt;"</span>
1615 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='response' direction='out'/&gt;"</span>
1616 <span class="normal">  </span><span class="string">"    &lt;/method&gt;"</span>
1617 <span class="normal">  </span><span class="string">"    &lt;property type='i' name='Major' access='read'/&gt;"</span>
1618 <span class="normal">  </span><span class="string">"    &lt;property type='i' name='Minor' access='read'/&gt;"</span>
1619 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='Notes' access='readwrite'/&gt;"</span>
1620 <span class="normal">  </span><span class="string">"  &lt;/interface&gt;"</span>
1621 <span class="normal">  </span><span class="string">"  &lt;interface name='org.gtk.GDBus.Example.Partition'&gt;"</span>
1622 <span class="normal">  </span><span class="string">"    &lt;method name='Hello'&gt;"</span>
1623 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='greeting' direction='in'/&gt;"</span>
1624 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='response' direction='out'/&gt;"</span>
1625 <span class="normal">  </span><span class="string">"    &lt;/method&gt;"</span>
1626 <span class="normal">  </span><span class="string">"    &lt;property type='i' name='PartitionNumber' access='read'/&gt;"</span>
1627 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='Notes' access='readwrite'/&gt;"</span>
1628 <span class="normal">  </span><span class="string">"  &lt;/interface&gt;"</span>
1629 <span class="normal">  </span><span class="string">"&lt;/node&gt;"</span><span class="symbol">;</span>
1630
1631 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1632
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>
1645
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>
1648
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">"(&amp;s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">greeting</span><span class="symbol">);</span>
1650
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>
1661
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>
1668
1669 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1670
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>
1682
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>
1687
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">"(&amp;s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">greeting</span><span class="symbol">);</span>
1689
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>
1711
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>
1725
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>
1735
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>
1758
1759 <span class="normal">  </span><span class="keyword">return</span><span class="normal"> ret</span><span class="symbol">;</span>
1760 <span class="cbracket">}</span>
1761
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>
1775
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>
1782
1783 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1784
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>
1797
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>
1800
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">"(&amp;s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">greeting</span><span class="symbol">);</span>
1802
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>
1813
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>
1820
1821 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1822
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>
1831
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>
1843
1844 <span class="normal">  </span><span class="keyword">return</span><span class="normal"> nodes</span><span class="symbol">;</span>
1845 <span class="cbracket">}</span>
1846
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>
1855
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>
1868
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>
1870
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>
1873
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>
1885
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">&amp;</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>
1897
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">&amp;</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">&amp;</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>
1905
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>
1907
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>
1910
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>
1917
1918 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
1919
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>
1926
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">&amp;</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">&gt;</span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
1935 <span class="cbracket">}</span>
1936
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>
1943
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>
1951
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>
1957
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>
1959
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>
1966
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>
1973
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>
1982
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>
1985
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>
1987
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>
1989
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>
1992       </tr>
1993     </tbody>
1994   </table>
1995 </div>
1996
1997 </div>
1998 <p><br class="example-break">
1999 </p>
2000 <p>
2001 </p>
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">
2006     <tbody>
2007       <tr>
2008         <td class="listing_lines" align="right"><pre>1
2009 2
2010 3
2011 4
2012 5
2013 6
2014 7
2015 8
2016 9
2017 10
2018 11
2019 12
2020 13
2021 14
2022 15
2023 16
2024 17
2025 18
2026 19
2027 20
2028 21
2029 22
2030 23
2031 24
2032 25
2033 26
2034 27
2035 28
2036 29
2037 30
2038 31
2039 32
2040 33
2041 34
2042 35
2043 36
2044 37
2045 38
2046 39
2047 40
2048 41
2049 42
2050 43
2051 44
2052 45
2053 46
2054 47
2055 48
2056 49
2057 50
2058 51
2059 52
2060 53
2061 54
2062 55
2063 56
2064 57
2065 58
2066 59
2067 60
2068 61
2069 62
2070 63
2071 64
2072 65
2073 66
2074 67
2075 68
2076 69
2077 70
2078 71
2079 72
2080 73
2081 74
2082 75
2083 76
2084 77
2085 78
2086 79
2087 80
2088 81
2089 82
2090 83
2091 84
2092 85
2093 86
2094 87
2095 88
2096 89
2097 90
2098 91
2099 92
2100 93
2101 94
2102 95
2103 96
2104 97
2105 98
2106 99
2107 100
2108 101
2109 102
2110 103
2111 104
2112 105
2113 106
2114 107
2115 108
2116 109
2117 110
2118 111
2119 112
2120 113
2121 114
2122 115
2123 116
2124 117
2125 118
2126 119
2127 120
2128 121
2129 122
2130 123
2131 124
2132 125
2133 126
2134 127
2135 128
2136 129
2137 130
2138 131
2139 132
2140 133
2141 134</pre></td>
2142         <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;string.h&gt;</span>
2143 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;stdlib.h&gt;</span>
2144
2145 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;sys/types.h&gt;</span>
2146 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;unistd.h&gt;</span>
2147
2148 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;time.h&gt;</span>
2149
2150 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;gio/gio.h&gt;</span>
2151 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;gio/gunixfdlist.h&gt;</span>
2152
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>
2163
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>
2167
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>
2181
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>
2187
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>
2190
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>
2194
2195 <span class="normal">  </span><span class="keyword">return</span><span class="normal"> fd</span><span class="symbol">;</span>
2196 <span class="cbracket">}</span>
2197
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>
2206
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">&amp;</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">-&gt;</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>
2222
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">(&amp;</span><span class="normal">now</span><span class="symbol">));</span>
2228
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>
2235
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>
2237
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>
2242
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>
2253
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>
2259
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>
2261
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>
2269
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>
2272
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>
2276       </tr>
2277     </tbody>
2278   </table>
2279 </div>
2280
2281 </div>
2282 <p><br class="example-break">
2283 </p>
2284 <p>
2285 </p>
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">
2290     <tbody>
2291       <tr>
2292         <td class="listing_lines" align="right"><pre>1
2293 2
2294 3
2295 4
2296 5
2297 6
2298 7
2299 8
2300 9
2301 10
2302 11
2303 12
2304 13
2305 14
2306 15
2307 16
2308 17
2309 18
2310 19
2311 20
2312 21
2313 22
2314 23
2315 24
2316 25
2317 26
2318 27
2319 28
2320 29
2321 30
2322 31
2323 32
2324 33
2325 34
2326 35
2327 36
2328 37
2329 38
2330 39
2331 40
2332 41
2333 42
2334 43
2335 44
2336 45
2337 46
2338 47
2339 48
2340 49
2341 50
2342 51
2343 52
2344 53
2345 54
2346 55
2347 56
2348 57
2349 58
2350 59
2351 60
2352 61
2353 62
2354 63
2355 64
2356 65
2357 66
2358 67
2359 68
2360 69
2361 70
2362 71
2363 72
2364 73
2365 74
2366 75
2367 76
2368 77
2369 78
2370 79
2371 80
2372 81
2373 82
2374 83
2375 84
2376 85
2377 86
2378 87
2379 88
2380 89
2381 90
2382 91
2383 92
2384 93
2385 94
2386 95
2387 96
2388 97
2389 98
2390 99
2391 100
2392 101
2393 102
2394 103
2395 104
2396 105
2397 106
2398 107
2399 108
2400 109
2401 110
2402 111
2403 112
2404 113
2405 114
2406 115
2407 116
2408 117
2409 118
2410 119
2411 120
2412 121
2413 122
2414 123
2415 124
2416 125
2417 126
2418 127
2419 128
2420 129
2421 130
2422 131
2423 132
2424 133
2425 134
2426 135
2427 136
2428 137
2429 138
2430 139
2431 140
2432 141
2433 142
2434 143
2435 144
2436 145
2437 146
2438 147
2439 148
2440 149
2441 150
2442 151
2443 152
2444 153
2445 154
2446 155
2447 156
2448 157
2449 158
2450 159
2451 160
2452 161
2453 162
2454 163
2455 164
2456 165
2457 166
2458 167
2459 168
2460 169
2461 170
2462 171
2463 172
2464 173
2465 174
2466 175
2467 176
2468 177
2469 178
2470 179
2471 180
2472 181
2473 182
2474 183
2475 184
2476 185
2477 186
2478 187
2479 188
2480 189
2481 190
2482 191
2483 192
2484 193
2485 194
2486 195
2487 196
2488 197
2489 198
2490 199
2491 200
2492 201
2493 202
2494 203
2495 204
2496 205
2497 206
2498 207
2499 208
2500 209
2501 210
2502 211
2503 212
2504 213
2505 214
2506 215
2507 216
2508 217
2509 218
2510 219
2511 220
2512 221
2513 222
2514 223
2515 224
2516 225
2517 226
2518 227
2519 228
2520 229
2521 230
2522 231
2523 232
2524 233
2525 234
2526 235
2527 236
2528 237
2529 238
2530 239
2531 240
2532 241
2533 242
2534 243
2535 244
2536 245
2537 246
2538 247
2539 248
2540 249
2541 250
2542 251
2543 252
2544 253
2545 254
2546 255
2547 256
2548 257
2549 258
2550 259
2551 260
2552 261
2553 262
2554 263
2555 264
2556 265
2557 266
2558 267
2559 268
2560 269
2561 270
2562 271
2563 272
2564 273
2565 274
2566 275
2567 276
2568 277
2569 278
2570 279
2571 280
2572 281
2573 282
2574 283
2575 284
2576 285
2577 286
2578 287
2579 288
2580 289
2581 290
2582 291
2583 292
2584 293
2585 294
2586 295
2587 296
2588 297
2589 298
2590 299
2591 300
2592 301
2593 302
2594 303
2595 304
2596 305
2597 306
2598 307
2599 308
2600 309
2601 310
2602 311
2603 312
2604 313
2605 314
2606 315
2607 316
2608 317
2609 318
2610 319
2611 320
2612 321
2613 322
2614 323
2615 324
2616 325
2617 326
2618 327
2619 328
2620 329
2621 330
2622 331
2623 332
2624 333
2625 334
2626 335
2627 336</pre></td>
2628         <td class="listing_code"><pre class="programlisting"><span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;gio/gio.h&gt;</span>
2629 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;stdlib.h&gt;</span>
2630
2631 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
2632
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>
2636
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>
2641
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>
2645
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>
2649
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>
2656
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>
2659
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>
2664
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">-&gt;</span><span class="normal">name</span><span class="symbol">);</span>
2666
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">)-&gt;</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>
2669
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">-&gt;</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">-&gt;</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>
2676
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>
2684
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">-&gt;</span><span class="normal">count</span><span class="symbol">);</span>
2689 <span class="normal">      </span><span class="keyword">break</span><span class="symbol">;</span>
2690
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">-&gt;</span><span class="normal">name</span><span class="symbol">);</span>
2693 <span class="normal">      </span><span class="keyword">break</span><span class="symbol">;</span>
2694
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>
2699
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>
2707
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">-&gt;</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>
2713
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">-&gt;</span><span class="normal">name</span><span class="symbol">);</span>
2716 <span class="normal">      myobj</span><span class="symbol">-&gt;</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>
2718
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>
2723
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>
2728
2729 <span class="normal">  gobject_class</span><span class="symbol">-&gt;</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">-&gt;</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">-&gt;</span><span class="normal">get_property </span><span class="symbol">=</span><span class="normal"> my_object_get_property</span><span class="symbol">;</span>
2732
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>
2740
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>
2749
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">-&gt;</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">-&gt;</span><span class="normal">count </span><span class="symbol">+</span><span class="normal"> change</span><span class="symbol">;</span>
2756
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>
2759
2760 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
2761
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>
2763
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">"&lt;node&gt;"</span>
2767 <span class="normal">  </span><span class="string">"  &lt;interface name='org.myorg.MyObject'&gt;"</span>
2768 <span class="normal">  </span><span class="string">"    &lt;method name='ChangeCount'&gt;"</span>
2769 <span class="normal">  </span><span class="string">"      &lt;arg type='i' name='change' direction='in'/&gt;"</span>
2770 <span class="normal">  </span><span class="string">"    &lt;/method&gt;"</span>
2771 <span class="normal">  </span><span class="string">"    &lt;property type='i' name='Count' access='read'/&gt;"</span>
2772 <span class="normal">  </span><span class="string">"    &lt;property type='s' name='Name' access='readwrite'/&gt;"</span>
2773 <span class="normal">  </span><span class="string">"  &lt;/interface&gt;"</span>
2774 <span class="normal">  </span><span class="string">"&lt;/node&gt;"</span><span class="symbol">;</span>
2775
2776
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>
2788
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">&amp;</span><span class="normal">change</span><span class="symbol">);</span>
2793
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>
2795
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>
2799
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>
2811
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">-&gt;</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">-&gt;</span><span class="normal">name </span><span class="symbol">?</span><span class="normal"> myobj</span><span class="symbol">-&gt;</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>
2821
2822 <span class="normal">  </span><span class="keyword">return</span><span class="normal"> ret</span><span class="symbol">;</span>
2823 <span class="cbracket">}</span>
2824
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>
2836
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>
2845
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>
2848
2849
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>
2857
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>
2866
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>
2869
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">-&gt;</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">-&gt;</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">-&gt;</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">-&gt;</span><span class="normal">name </span><span class="symbol">?</span><span class="normal"> myobj</span><span class="symbol">-&gt;</span><span class="normal">name </span><span class="symbol">:</span><span class="normal"> </span><span class="string">""</span><span class="symbol">));</span>
2878
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>
2890
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>
2898
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">-&gt;</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">&amp;</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">&gt;</span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
2909 <span class="cbracket">}</span>
2910
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>
2917
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>
2925
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>
2932
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>
2934
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>
2941
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>
2943
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>
2952
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>
2955
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>
2957
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>
2959
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>
2961
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>
2964       </tr>
2965     </tbody>
2966   </table>
2967 </div>
2968
2969 </div>
2970 <p><br class="example-break">
2971 </p>
2972 </div>
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
2982 } GBusType;
2983 </pre>
2984 <p>
2985 An enumeration for well-known message buses.
2986 </p>
2987 <div class="variablelist"><table border="0">
2988 <col align="left" valign="top">
2989 <tbody>
2990 <tr>
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.
2993 </td>
2994 </tr>
2995 <tr>
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.
2998 </td>
2999 </tr>
3000 <tr>
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.
3003 </td>
3004 </tr>
3005 <tr>
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.
3008 </td>
3009 </tr>
3010 </tbody>
3011 </table></div>
3012 <p class="since">Since 2.26</p>
3013 </div>
3014 <hr>
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>
3021 <p>
3022 Asynchronously connects to the message bus specified by <em class="parameter"><code>bus_type</code></em>.
3023 </p>
3024 <p>
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.
3027 </p>
3028 <p>
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.
3031 </p>
3032 <div class="variablelist"><table border="0">
3033 <col align="left" valign="top">
3034 <tbody>
3035 <tr>
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>
3038 </tr>
3039 <tr>
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>
3042 </td>
3043 </tr>
3044 <tr>
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>
3047 </tr>
3048 <tr>
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>
3051 </tr>
3052 </tbody>
3053 </table></div>
3054 <p class="since">Since 2.26</p>
3055 </div>
3056 <hr>
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>
3061 <p>
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>.
3063 </p>
3064 <p>
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>.
3070 </p>
3071 <p>
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>.
3074 </p>
3075 <div class="variablelist"><table border="0">
3076 <col align="left" valign="top">
3077 <tbody>
3078 <tr>
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>
3081 </tr>
3082 <tr>
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>
3085 </tr>
3086 <tr>
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>
3089 </td>
3090 </tr>
3091 </tbody>
3092 </table></div>
3093 <p class="since">Since 2.26</p>
3094 </div>
3095 <hr>
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>
3101 <p>
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.
3106 </p>
3107 <p>
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.
3110 </p>
3111 <p>
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>.
3117 </p>
3118 <p>
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>.
3121 </p>
3122 <div class="variablelist"><table border="0">
3123 <col align="left" valign="top">
3124 <tbody>
3125 <tr>
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>
3128 </tr>
3129 <tr>
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>
3132 </td>
3133 </tr>
3134 <tr>
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>
3137 </tr>
3138 <tr>
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>
3141 </td>
3142 </tr>
3143 </tbody>
3144 </table></div>
3145 <p class="since">Since 2.26</p>
3146 </div>
3147 <hr>
3148 <div class="refsect2">
3149 <a name="GDBusConnection-struct"></a><h3>GDBusConnection</h3>
3150 <pre class="programlisting">typedef struct _GDBusConnection GDBusConnection;</pre>
3151 <p>
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.
3154 </p>
3155 <p class="since">Since 2.26</p>
3156 </div>
3157 <hr>
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&lt;&lt;0),
3163   G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER = (1&lt;&lt;1),
3164   G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1&lt;&lt;2),
3165   G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION = (1&lt;&lt;3),
3166   G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING = (1&lt;&lt;4)
3167 } GDBusConnectionFlags;
3168 </pre>
3169 <p>
3170 Flags used when creating a new <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a>.
3171 </p>
3172 <div class="variablelist"><table border="0">
3173 <col align="left" valign="top">
3174 <tbody>
3175 <tr>
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>
3177 <td>No flags set.
3178 </td>
3179 </tr>
3180 <tr>
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.
3183 </td>
3184 </tr>
3185 <tr>
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.
3188 </td>
3189 </tr>
3190 <tr>
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>
3192 <td>When
3193 authenticating as a server, allow the anonymous authentication
3194 method.
3195 </td>
3196 </tr>
3197 <tr>
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.
3201 </td>
3202 </tr>
3203 <tr>
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.
3207 </td>
3208 </tr>
3209 </tbody>
3210 </table></div>
3211 <p class="since">Since 2.26</p>
3212 </div>
3213 <hr>
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>
3223 <p>
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>.
3226 </p>
3227 <p>
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.
3230 </p>
3231 <p>
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.
3235 </p>
3236 <p>
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.
3239 </p>
3240 <p>
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
3243 operation.
3244 </p>
3245 <p>
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
3248 version.
3249 </p>
3250 <div class="variablelist"><table border="0">
3251 <col align="left" valign="top">
3252 <tbody>
3253 <tr>
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>
3256 </tr>
3257 <tr>
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>
3260 </td>
3261 </tr>
3262 <tr>
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>
3265 </tr>
3266 <tr>
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>
3269 </td>
3270 </tr>
3271 <tr>
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>
3274 </td>
3275 </tr>
3276 <tr>
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>
3279 </tr>
3280 <tr>
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>
3283 </tr>
3284 </tbody>
3285 </table></div>
3286 <p class="since">Since 2.26</p>
3287 </div>
3288 <hr>
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>
3293 <p>
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>.
3295 </p>
3296 <div class="variablelist"><table border="0">
3297 <col align="left" valign="top">
3298 <tbody>
3299 <tr>
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>
3302 </tr>
3303 <tr>
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>
3306 </tr>
3307 <tr>
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>
3310 </tr>
3311 </tbody>
3312 </table></div>
3313 <p class="since">Since 2.26</p>
3314 </div>
3315 <hr>
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>
3324 <p>
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>.
3327 </p>
3328 <p>
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.
3331 </p>
3332 <p>
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.
3336 </p>
3337 <p>
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.
3340 </p>
3341 <p>
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.
3344 </p>
3345 <div class="variablelist"><table border="0">
3346 <col align="left" valign="top">
3347 <tbody>
3348 <tr>
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>
3351 </tr>
3352 <tr>
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>
3355 </td>
3356 </tr>
3357 <tr>
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>
3360 </tr>
3361 <tr>
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>
3364 </td>
3365 </tr>
3366 <tr>
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>
3369 </td>
3370 </tr>
3371 <tr>
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>
3374 </tr>
3375 <tr>
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>
3378 </tr>
3379 </tbody>
3380 </table></div>
3381 <p class="since">Since 2.26</p>
3382 </div>
3383 <hr>
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>
3392 <p>
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.
3396 </p>
3397 <p>
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.
3403 </p>
3404 <p>
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
3407 operation.
3408 </p>
3409 <p>
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.
3412 </p>
3413 <p>
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
3416 version.
3417 </p>
3418 <div class="variablelist"><table border="0">
3419 <col align="left" valign="top">
3420 <tbody>
3421 <tr>
3422 <td><p><span class="term"><em class="parameter"><code>address</code></em> :</span></p></td>
3423 <td>A D-Bus address.</td>
3424 </tr>
3425 <tr>
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>
3428 </tr>
3429 <tr>
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>
3432 </td>
3433 </tr>
3434 <tr>
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>
3437 </td>
3438 </tr>
3439 <tr>
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>
3442 </tr>
3443 <tr>
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>
3446 </tr>
3447 </tbody>
3448 </table></div>
3449 <p class="since">Since 2.26</p>
3450 </div>
3451 <hr>
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>
3457 <p>
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>.
3459 </p>
3460 <div class="variablelist"><table border="0">
3461 <col align="left" valign="top">
3462 <tbody>
3463 <tr>
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>
3466 </tr>
3467 <tr>
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>
3470 </tr>
3471 <tr>
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>
3474 </tr>
3475 </tbody>
3476 </table></div>
3477 <p class="since">Since 2.26</p>
3478 </div>
3479 <hr>
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>
3488 <p>
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.
3492 </p>
3493 <p>
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.
3499 </p>
3500 <p>
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.
3503 </p>
3504 <p>
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.
3507 </p>
3508 <div class="variablelist"><table border="0">
3509 <col align="left" valign="top">
3510 <tbody>
3511 <tr>
3512 <td><p><span class="term"><em class="parameter"><code>address</code></em> :</span></p></td>
3513 <td>A D-Bus address.</td>
3514 </tr>
3515 <tr>
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>
3518 </tr>
3519 <tr>
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>
3522 </td>
3523 </tr>
3524 <tr>
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>
3527 </td>
3528 </tr>
3529 <tr>
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>
3532 </tr>
3533 <tr>
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>
3536 </tr>
3537 </tbody>
3538 </table></div>
3539 <p class="since">Since 2.26</p>
3540 </div>
3541 <hr>
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>
3546 <p>
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.
3551 </p>
3552 <div class="variablelist"><table border="0">
3553 <col align="left" valign="top">
3554 <tbody><tr>
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>
3557 </tr></tbody>
3558 </table></div>
3559 <p class="since">Since 2.26</p>
3560 </div>
3561 <hr>
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>
3568 <p>
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>).
3572 </p>
3573 <p>
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.
3578 </p>
3579 <p>
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>.
3582 </p>
3583 <p>
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.
3587 </p>
3588 <p>
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
3594 version.
3595 </p>
3596 <div class="variablelist"><table border="0">
3597 <col align="left" valign="top">
3598 <tbody>
3599 <tr>
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>
3602 </tr>
3603 <tr>
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>
3606 </td>
3607 </tr>
3608 <tr>
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>
3612 </td>
3613 </tr>
3614 <tr>
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>
3617 </tr>
3618 </tbody>
3619 </table></div>
3620 <p class="since">Since 2.26</p>
3621 </div>
3622 <hr>
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>
3628 <p>
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>.
3630 </p>
3631 <div class="variablelist"><table border="0">
3632 <col align="left" valign="top">
3633 <tbody>
3634 <tr>
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>
3637 </tr>
3638 <tr>
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>
3641 </tr>
3642 <tr>
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>
3645 </tr>
3646 <tr>
3647 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3648 <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>
3650 </tr>
3651 </tbody>
3652 </table></div>
3653 <p class="since">Since 2.26</p>
3654 </div>
3655 <hr>
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>
3661 <p>
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
3665 does.
3666 </p>
3667 <div class="variablelist"><table border="0">
3668 <col align="left" valign="top">
3669 <tbody>
3670 <tr>
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>
3673 </tr>
3674 <tr>
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>
3677 </td>
3678 </tr>
3679 <tr>
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>
3682 </tr>
3683 <tr>
3684 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3685 <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>
3687 </tr>
3688 </tbody>
3689 </table></div>
3690 <p class="since">Since 2.26</p>
3691 </div>
3692 <hr>
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>
3696 <p>
3697 Gets whether <em class="parameter"><code>connection</code></em> is closed.
3698 </p>
3699 <div class="variablelist"><table border="0">
3700 <col align="left" valign="top">
3701 <tbody>
3702 <tr>
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>
3705 </tr>
3706 <tr>
3707 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3708 <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>
3710 </tr>
3711 </tbody>
3712 </table></div>
3713 <p class="since">Since 2.26</p>
3714 </div>
3715 <hr>
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>
3722 <p>
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
3729 kernel.
3730 </p>
3731 <p>
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
3737 version.
3738 </p>
3739 <div class="variablelist"><table border="0">
3740 <col align="left" valign="top">
3741 <tbody>
3742 <tr>
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>
3745 </tr>
3746 <tr>
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>
3749 </td>
3750 </tr>
3751 <tr>
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>
3755 </td>
3756 </tr>
3757 <tr>
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>
3760 </tr>
3761 </tbody>
3762 </table></div>
3763 <p class="since">Since 2.26</p>
3764 </div>
3765 <hr>
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>
3771 <p>
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>.
3773 </p>
3774 <div class="variablelist"><table border="0">
3775 <col align="left" valign="top">
3776 <tbody>
3777 <tr>
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>
3780 </tr>
3781 <tr>
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>
3784 </tr>
3785 <tr>
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>
3788 </tr>
3789 <tr>
3790 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3791 <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>
3793 </tr>
3794 </tbody>
3795 </table></div>
3796 <p class="since">Since 2.26</p>
3797 </div>
3798 <hr>
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>
3804 <p>
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
3808 does.
3809 </p>
3810 <div class="variablelist"><table border="0">
3811 <col align="left" valign="top">
3812 <tbody>
3813 <tr>
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>
3816 </tr>
3817 <tr>
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>
3820 </td>
3821 </tr>
3822 <tr>
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>
3825 </tr>
3826 <tr>
3827 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
3828 <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>
3830 </tr>
3831 </tbody>
3832 </table></div>
3833 <p class="since">Since 2.26</p>
3834 </div>
3835 <hr>
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>
3839 <p>
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.
3843 </p>
3844 <div class="variablelist"><table border="0">
3845 <col align="left" valign="top">
3846 <tbody>
3847 <tr>
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>
3850 </tr>
3851 <tr>
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>
3855 </tr>
3856 </tbody>
3857 </table></div>
3858 <p class="since">Since 2.26</p>
3859 </div>
3860 <hr>
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>
3865 <p>
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
3868 more details.
3869 </p>
3870 <p>
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.
3877 </p>
3878 <div class="variablelist"><table border="0">
3879 <col align="left" valign="top">
3880 <tbody>
3881 <tr>
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>
3884 </tr>
3885 <tr>
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>
3889 </tr>
3890 </tbody>
3891 </table></div>
3892 <p class="since">Since 2.26</p>
3893 </div>
3894 <hr>
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>
3898 <p>
3899 Gets the underlying stream used for IO.
3900 </p>
3901 <p>
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.
3905 </p>
3906 <div class="variablelist"><table border="0">
3907 <col align="left" valign="top">
3908 <tbody>
3909 <tr>
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>
3912 </td>
3913 </tr>
3914 <tr>
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>
3917 </td>
3918 </tr>
3919 </tbody>
3920 </table></div>
3921 <p class="since">Since 2.26</p>
3922 </div>
3923 <hr>
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>
3927 <p>
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.
3930 </p>
3931 <div class="variablelist"><table border="0">
3932 <col align="left" valign="top">
3933 <tbody>
3934 <tr>
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>
3937 </tr>
3938 <tr>
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>
3942 </tr>
3943 </tbody>
3944 </table></div>
3945 <p class="since">Since 2.26</p>
3946 </div>
3947 <hr>
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>
3951 <p>
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.
3955 </p>
3956 <div class="variablelist"><table border="0">
3957 <col align="left" valign="top">
3958 <tbody>
3959 <tr>
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>
3962 </tr>
3963 <tr>
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>
3968 </tr>
3969 </tbody>
3970 </table></div>
3971 <p class="since">Since 2.26</p>
3972 </div>
3973 <hr>
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&lt;&lt;0)
3979 } GDBusCapabilityFlags;
3980 </pre>
3981 <p>
3982 Capabilities negotiated with the remote peer.
3983 </p>
3984 <div class="variablelist"><table border="0">
3985 <col align="left" valign="top">
3986 <tbody>
3987 <tr>
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>
3989 <td>No flags set.
3990 </td>
3991 </tr>
3992 <tr>
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>
3994 <td>The connection
3995 supports exchanging UNIX file descriptors with the remote peer.
3996 </td>
3997 </tr>
3998 </tbody>
3999 </table></div>
4000 <p class="since">Since 2.26</p>
4001 </div>
4002 <hr>
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>
4006 <p>
4007 Gets the capabilities negotiated with the remote peer
4008 </p>
4009 <div class="variablelist"><table border="0">
4010 <col align="left" valign="top">
4011 <tbody>
4012 <tr>
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>
4015 </tr>
4016 <tr>
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>
4019 </tr>
4020 </tbody>
4021 </table></div>
4022 <p class="since">Since 2.26</p>
4023 </div>
4024 <hr>
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>
4029 <p>
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.
4035 </p>
4036 <p>
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.
4040 </p>
4041 <div class="variablelist"><table border="0">
4042 <col align="left" valign="top">
4043 <tbody>
4044 <tr>
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>
4047 </tr>
4048 <tr>
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>
4052 </td>
4053 </tr>
4054 </tbody>
4055 </table></div>
4056 <p class="since">Since 2.26</p>
4057 </div>
4058 <hr>
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&lt;&lt;0)
4064 } GDBusCallFlags;
4065 </pre>
4066 <p>
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.
4068 </p>
4069 <div class="variablelist"><table border="0">
4070 <col align="left" valign="top">
4071 <tbody>
4072 <tr>
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>
4074 <td>No flags set.
4075 </td>
4076 </tr>
4077 <tr>
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
4081 invocation.
4082 </td>
4083 </tr>
4084 </tbody>
4085 </table></div>
4086 <p class="since">Since 2.26</p>
4087 </div>
4088 <hr>
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>
4103 <p>
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>.
4107 </p>
4108 <p>
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>.
4114 </p>
4115 <p>
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.
4119 </p>
4120 <p>
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.:
4123 </p>
4124 <div class="informalexample">
4125   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
4126     <tbody>
4127       <tr>
4128         <td class="listing_lines" align="right"><pre>1
4129 2
4130 3
4131 4
4132 5
4133 6
4134 7
4135 8
4136 9
4137 10
4138 11
4139 12
4140 13
4141 14</pre></td>
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>
4156       </tr>
4157     </tbody>
4158   </table>
4159 </div>
4160
4161 <p>
4162 </p>
4163 <p>
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
4169 function.
4170 </p>
4171 <p>
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.
4174 </p>
4175 <div class="variablelist"><table border="0">
4176 <col align="left" valign="top">
4177 <tbody>
4178 <tr>
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>
4181 </tr>
4182 <tr>
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>
4186 </td>
4187 </tr>
4188 <tr>
4189 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4190 <td>Path of remote object.</td>
4191 </tr>
4192 <tr>
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>
4195 </tr>
4196 <tr>
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>
4199 </tr>
4200 <tr>
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>
4204 </td>
4205 </tr>
4206 <tr>
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>
4209 </td>
4210 </tr>
4211 <tr>
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>
4214 </tr>
4215 <tr>
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>
4219 </tr>
4220 <tr>
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>
4223 </td>
4224 </tr>
4225 <tr>
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>
4230 </td>
4231 </tr>
4232 <tr>
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>
4235 </tr>
4236 </tbody>
4237 </table></div>
4238 <p class="since">Since 2.26</p>
4239 </div>
4240 <hr>
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>
4246 <p>
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>.
4248 </p>
4249 <div class="variablelist"><table border="0">
4250 <col align="left" valign="top">
4251 <tbody>
4252 <tr>
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>
4255 </tr>
4256 <tr>
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>
4259 </tr>
4260 <tr>
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>
4263 </tr>
4264 <tr>
4265 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4266 <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>
4269 </tr>
4270 </tbody>
4271 </table></div>
4272 <p class="since">Since 2.26</p>
4273 </div>
4274 <hr>
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>
4288 <p>
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>.
4292 </p>
4293 <p>
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>.
4299 </p>
4300 <p>
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.
4305 </p>
4306 <p>
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.:
4309 </p>
4310 <div class="informalexample">
4311   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
4312     <tbody>
4313       <tr>
4314         <td class="listing_lines" align="right"><pre>1
4315 2
4316 3
4317 4
4318 5
4319 6
4320 7
4321 8
4322 9
4323 10
4324 11
4325 12
4326 13</pre></td>
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">&amp;</span><span class="normal">error</span><span class="symbol">);</span></pre></td>
4340       </tr>
4341     </tbody>
4342   </table>
4343 </div>
4344
4345 <p>
4346 </p>
4347 <p>
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
4350 this method.
4351 </p>
4352 <div class="variablelist"><table border="0">
4353 <col align="left" valign="top">
4354 <tbody>
4355 <tr>
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>
4358 </tr>
4359 <tr>
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>
4362 </tr>
4363 <tr>
4364 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4365 <td>Path of remote object.</td>
4366 </tr>
4367 <tr>
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>
4370 </tr>
4371 <tr>
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>
4374 </tr>
4375 <tr>
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>
4379 </td>
4380 </tr>
4381 <tr>
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>
4384 </td>
4385 </tr>
4386 <tr>
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>
4389 </tr>
4390 <tr>
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>
4394 </tr>
4395 <tr>
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>
4398 </td>
4399 </tr>
4400 <tr>
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>
4403 </tr>
4404 <tr>
4405 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4406 <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>
4409 </tr>
4410 </tbody>
4411 </table></div>
4412 <p class="since">Since 2.26</p>
4413 </div>
4414 <hr>
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>
4431 <p>
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.
4433 </p>
4434 <p>
4435 This method is only available on UNIX.
4436 </p>
4437 <div class="variablelist"><table border="0">
4438 <col align="left" valign="top">
4439 <tbody>
4440 <tr>
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>
4443 </tr>
4444 <tr>
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>
4448 </td>
4449 </tr>
4450 <tr>
4451 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4452 <td>Path of remote object.</td>
4453 </tr>
4454 <tr>
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>
4457 </tr>
4458 <tr>
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>
4461 </tr>
4462 <tr>
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>
4466 </td>
4467 </tr>
4468 <tr>
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>
4471 </td>
4472 </tr>
4473 <tr>
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>
4476 </tr>
4477 <tr>
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>
4481 </tr>
4482 <tr>
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>
4485 </td>
4486 </tr>
4487 <tr>
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>
4490 </td>
4491 </tr>
4492 <tr>
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>
4497 </td>
4498 </tr>
4499 <tr>
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>
4502 </tr>
4503 </tbody>
4504 </table></div>
4505 <p class="since">Since 2.30</p>
4506 </div>
4507 <hr>
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>
4515 <p>
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>.
4517 </p>
4518 <div class="variablelist"><table border="0">
4519 <col align="left" valign="top">
4520 <tbody>
4521 <tr>
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>
4524 </tr>
4525 <tr>
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>
4528 </td>
4529 </tr>
4530 <tr>
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>
4533 </tr>
4534 <tr>
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>
4537 </tr>
4538 <tr>
4539 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4540 <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>
4543 </tr>
4544 </tbody>
4545 </table></div>
4546 <p class="since">Since 2.30</p>
4547 </div>
4548 <hr>
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>
4565 <p>
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.
4567 </p>
4568 <p>
4569 This method is only available on UNIX.
4570 </p>
4571 <div class="variablelist"><table border="0">
4572 <col align="left" valign="top">
4573 <tbody>
4574 <tr>
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>
4577 </tr>
4578 <tr>
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>
4581 </tr>
4582 <tr>
4583 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4584 <td>Path of remote object.</td>
4585 </tr>
4586 <tr>
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>
4589 </tr>
4590 <tr>
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>
4593 </tr>
4594 <tr>
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>
4598 </td>
4599 </tr>
4600 <tr>
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>
4603 </td>
4604 </tr>
4605 <tr>
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>
4608 </tr>
4609 <tr>
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>
4613 </tr>
4614 <tr>
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>
4617 </td>
4618 </tr>
4619 <tr>
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>
4622 </td>
4623 </tr>
4624 <tr>
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>
4627 </td>
4628 </tr>
4629 <tr>
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>
4632 </tr>
4633 <tr>
4634 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4635 <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>
4638 </tr>
4639 </tbody>
4640 </table></div>
4641 <p class="since">Since 2.30</p>
4642 </div>
4643 <hr>
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>
4653 <p>
4654 Emits a signal.
4655 </p>
4656 <p>
4657 If the parameters GVariant is floating, it is consumed.
4658 </p>
4659 <p>
4660 This can only fail if <em class="parameter"><code>parameters</code></em> is not compatible with the D-Bus protocol.
4661 </p>
4662 <div class="variablelist"><table border="0">
4663 <col align="left" valign="top">
4664 <tbody>
4665 <tr>
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>
4668 </tr>
4669 <tr>
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>
4673 </td>
4674 </tr>
4675 <tr>
4676 <td><p><span class="term"><em class="parameter"><code>object_path</code></em> :</span></p></td>
4677 <td>Path of remote object.</td>
4678 </tr>
4679 <tr>
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>
4682 </tr>
4683 <tr>
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>
4686 </tr>
4687 <tr>
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>
4691 </td>
4692 </tr>
4693 <tr>
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>
4696 </tr>
4697 <tr>
4698 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4699 <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>
4701 </tr>
4702 </tbody>
4703 </table></div>
4704 <p class="since">Since 2.26</p>
4705 </div>
4706 <hr>
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&lt;&lt;0)
4712 } GDBusSignalFlags;
4713 </pre>
4714 <p>
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>.
4716 </p>
4717 <div class="variablelist"><table border="0">
4718 <col align="left" valign="top">
4719 <tbody>
4720 <tr>
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>
4722 <td>No flags set.
4723 </td>
4724 </tr>
4725 <tr>
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).
4730 </td>
4731 </tr>
4732 </tbody>
4733 </table></div>
4734 <p class="since">Since 2.26</p>
4735 </div>
4736 <hr>
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>
4746 <p>
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>.
4748 </p>
4749 <div class="variablelist"><table border="0">
4750 <col align="left" valign="top">
4751 <tbody>
4752 <tr>
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>
4755 </tr>
4756 <tr>
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>
4759 </tr>
4760 <tr>
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>
4763 </tr>
4764 <tr>
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>
4767 </tr>
4768 <tr>
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>
4771 </tr>
4772 <tr>
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>
4775 </tr>
4776 <tr>
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>
4779 </tr>
4780 </tbody>
4781 </table></div>
4782 <p class="since">Since 2.26</p>
4783 </div>
4784 <hr>
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>
4797 <p>
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.
4802 </p>
4803 <p>
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>.
4806 </p>
4807 <p>
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.
4814 </p>
4815 <div class="variablelist"><table border="0">
4816 <col align="left" valign="top">
4817 <tbody>
4818 <tr>
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>
4821 </tr>
4822 <tr>
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>
4826 </td>
4827 </tr>
4828 <tr>
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>
4832 </td>
4833 </tr>
4834 <tr>
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>
4837 </td>
4838 </tr>
4839 <tr>
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>
4842 </td>
4843 </tr>
4844 <tr>
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>
4848 </td>
4849 </tr>
4850 <tr>
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>
4853 </tr>
4854 <tr>
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>
4857 </tr>
4858 <tr>
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>
4861 </tr>
4862 <tr>
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>
4866 </td>
4867 </tr>
4868 <tr>
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>
4871 </tr>
4872 </tbody>
4873 </table></div>
4874 <p class="since">Since 2.26</p>
4875 </div>
4876 <hr>
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>
4882 <p>
4883 Unsubscribes from signals.
4884 </p>
4885 <div class="variablelist"><table border="0">
4886 <col align="left" valign="top">
4887 <tbody>
4888 <tr>
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>
4891 </tr>
4892 <tr>
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>
4895 </tr>
4896 </tbody>
4897 </table></div>
4898 <p class="since">Since 2.26</p>
4899 </div>
4900 <hr>
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&lt;&lt;0)
4906 } GDBusSendMessageFlags;
4907 </pre>
4908 <p>
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>.
4910 </p>
4911 <div class="variablelist"><table border="0">
4912 <col align="left" valign="top">
4913 <tbody>
4914 <tr>
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>
4916 <td>No flags set.
4917 </td>
4918 </tr>
4919 <tr>
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
4923 sending a message.
4924 </td>
4925 </tr>
4926 </tbody>
4927 </table></div>
4928 <p class="since">Since 2.26</p>
4929 </div>
4930 <hr>
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>
4938 <p>
4939 Asynchronously sends <em class="parameter"><code>message</code></em> to the peer represented by <em class="parameter"><code>connection</code></em>.
4940 </p>
4941 <p>
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.
4948 </p>
4949 <p>
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>.
4953 </p>
4954 <p>
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.
4957 </p>
4958 <p>
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.
4961 </p>
4962 <div class="variablelist"><table border="0">
4963 <col align="left" valign="top">
4964 <tbody>
4965 <tr>
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>
4968 </tr>
4969 <tr>
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>
4972 </td>
4973 </tr>
4974 <tr>
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>
4977 </tr>
4978 <tr>
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>
4982 </td>
4983 </tr>
4984 <tr>
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>
4987 </tr>
4988 <tr>
4989 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
4990 <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>
4993 </tr>
4994 </tbody>
4995 </table></div>
4996 <p class="since">Since 2.26</p>
4997 </div>
4998 <hr>
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>
5010 <p>
5011 Asynchronously sends <em class="parameter"><code>message</code></em> to the peer represented by <em class="parameter"><code>connection</code></em>.
5012 </p>
5013 <p>
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.
5020 </p>
5021 <p>
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>.
5026 </p>
5027 <p>
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.
5033 </p>
5034 <p>
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.
5037 </p>
5038 <p>
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.
5041 </p>
5042 <div class="variablelist"><table border="0">
5043 <col align="left" valign="top">
5044 <tbody>
5045 <tr>
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>
5048 </tr>
5049 <tr>
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>
5052 </tr>
5053 <tr>
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>
5056 </tr>
5057 <tr>
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>
5061 </tr>
5062 <tr>
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>
5066 </td>
5067 </tr>
5068 <tr>
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>
5071 </td>
5072 </tr>
5073 <tr>
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>
5077 </td>
5078 </tr>
5079 <tr>
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>
5082 </tr>
5083 </tbody>
5084 </table></div>
5085 <p class="since">Since 2.26</p>
5086 </div>
5087 <hr>
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>
5094 <p>
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>.
5096 </p>
5097 <p>
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>.
5102 </p>
5103 <p>
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.
5106 </p>
5107 <div class="variablelist"><table border="0">
5108 <col align="left" valign="top">
5109 <tbody>
5110 <tr>
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>
5113 </td>
5114 </tr>
5115 <tr>
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>
5118 </tr>
5119 <tr>
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>
5122 </tr>
5123 <tr>
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>
5126 </td>
5127 </tr>
5128 </tbody>
5129 </table></div>
5130 <p class="since">Since 2.26</p>
5131 </div>
5132 <hr>
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>
5143 <p>
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.
5148 </p>
5149 <p>
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.
5156 </p>
5157 <p>
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>.
5162 </p>
5163 <p>
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>.
5168 </p>
5169 <p>
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.
5172 </p>
5173 <p>
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.
5176 </p>
5177 <div class="variablelist"><table border="0">
5178 <col align="left" valign="top">
5179 <tbody>
5180 <tr>
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>
5183 </tr>
5184 <tr>
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>
5187 </tr>
5188 <tr>
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>
5191 </tr>
5192 <tr>
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>
5196 </tr>
5197 <tr>
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>
5201 </td>
5202 </tr>
5203 <tr>
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>
5206 </td>
5207 </tr>
5208 <tr>
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>
5211 </tr>
5212 <tr>
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>
5215 </td>
5216 </tr>
5217 </tbody>
5218 </table></div>
5219 <p class="since">Since 2.26</p>
5220 </div>
5221 <hr>
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>
5228 <p>
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>.
5230 </p>
5231 <p>
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:
5235 </p>
5236 <div class="informalexample">
5237   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
5238     <tbody>
5239       <tr>
5240         <td class="listing_lines" align="right"><pre>1
5241 2
5242 3
5243 4
5244 5
5245 6
5246 7
5247 8
5248 9</pre></td>
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>
5258       </tr>
5259     </tbody>
5260   </table>
5261 </div>
5262
5263 <p>
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>:
5265 </p>
5266 <div class="informalexample">
5267   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
5268     <tbody>
5269       <tr>
5270         <td class="listing_lines" align="right"><pre>1
5271 2
5272 3
5273 4
5274 5
5275 6
5276 7
5277 8
5278 9
5279 10
5280 11
5281 12
5282 13</pre></td>
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>
5296       </tr>
5297     </tbody>
5298   </table>
5299 </div>
5300
5301 <p>
5302 Finally, a filter function may modify a message by copying it:
5303 </p>
5304 <div class="informalexample">
5305   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
5306     <tbody>
5307       <tr>
5308         <td class="listing_lines" align="right"><pre>1
5309 2
5310 3
5311 4
5312 5
5313 6
5314 7
5315 8
5316 9
5317 10
5318 11
5319 12
5320 13
5321 14
5322 15
5323 16
5324 17
5325 18</pre></td>
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>
5334
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">&amp;</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>
5339
5340 <span class="normal">  </span><span class="comment">/* modify @copy */</span>
5341
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>
5344       </tr>
5345     </tbody>
5346   </table>
5347 </div>
5348
5349 <p>
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>.
5356 </p>
5357 <div class="variablelist"><table border="0">
5358 <col align="left" valign="top">
5359 <tbody>
5360 <tr>
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>
5363 </td>
5364 </tr>
5365 <tr>
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>
5368 </td>
5369 </tr>
5370 <tr>
5371 <td><p><span class="term"><em class="parameter"><code>incoming</code></em> :</span></p></td>
5372 <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>
5375 </tr>
5376 <tr>
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>
5379 </tr>
5380 <tr>
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>
5385 </td>
5386 </tr>
5387 </tbody>
5388 </table></div>
5389 <p class="since">Since 2.26</p>
5390 </div>
5391 <hr>
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>
5398 <p>
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.
5406 </p>
5407 <p>
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.
5413 </p>
5414 <p>
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.
5421 </p>
5422 <div class="variablelist"><table border="0">
5423 <col align="left" valign="top">
5424 <tbody>
5425 <tr>
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>
5428 </tr>
5429 <tr>
5430 <td><p><span class="term"><em class="parameter"><code>filter_function</code></em> :</span></p></td>
5431 <td>A filter function.</td>
5432 </tr>
5433 <tr>
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>
5436 </tr>
5437 <tr>
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>
5441 </tr>
5442 <tr>
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>
5446 </tr>
5447 </tbody>
5448 </table></div>
5449 <p class="since">Since 2.26</p>
5450 </div>
5451 <hr>
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>
5456 <p>
5457 Removes a filter.
5458 </p>
5459 <div class="variablelist"><table border="0">
5460 <col align="left" valign="top">
5461 <tbody>
5462 <tr>
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>
5465 </td>
5466 </tr>
5467 <tr>
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>
5470 </td>
5471 </tr>
5472 </tbody>
5473 </table></div>
5474 <p class="since">Since 2.26</p>
5475 </div>
5476 <hr>
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;
5484 </pre>
5485 <p>
5486 Virtual table for handling properties and method calls for a D-Bus
5487 interface.
5488 </p>
5489 <p>
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>.
5493 </p>
5494 <div class="variablelist"><table border="0">
5495 <col align="left" valign="top">
5496 <tbody>
5497 <tr>
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>
5500 </tr>
5501 <tr>
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>
5504 </tr>
5505 <tr>
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>
5508 </tr>
5509 </tbody>
5510 </table></div>
5511 <p class="since">Since 2.26</p>
5512 </div>
5513 <hr>
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>
5524 <p>
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>.
5526 </p>
5527 <div class="variablelist"><table border="0">
5528 <col align="left" valign="top">
5529 <tbody>
5530 <tr>
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>
5533 </tr>
5534 <tr>
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>
5537 </tr>
5538 <tr>
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>
5541 </tr>
5542 <tr>
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>
5545 </tr>
5546 <tr>
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>
5549 </tr>
5550 <tr>
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>
5553 </tr>
5554 <tr>
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>
5557 </tr>
5558 <tr>
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>
5561 </tr>
5562 </tbody>
5563 </table></div>
5564 <p class="since">Since 2.26</p>
5565 </div>
5566 <hr>
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>
5576 <p>
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>.
5578 </p>
5579 <div class="variablelist"><table border="0">
5580 <col align="left" valign="top">
5581 <tbody>
5582 <tr>
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>
5585 </tr>
5586 <tr>
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>
5589 </tr>
5590 <tr>
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>
5593 </tr>
5594 <tr>
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>
5597 </tr>
5598 <tr>
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>
5601 </tr>
5602 <tr>
5603 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
5604 <td>Return location for error.</td>
5605 </tr>
5606 <tr>
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>
5609 </tr>
5610 <tr>
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>
5615 </tr>
5616 </tbody>
5617 </table></div>
5618 <p class="since">Since 2.26</p>
5619 </div>
5620 <hr>
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>
5631 <p>
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>.
5633 </p>
5634 <div class="variablelist"><table border="0">
5635 <col align="left" valign="top">
5636 <tbody>
5637 <tr>
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>
5640 </tr>
5641 <tr>
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>
5644 </tr>
5645 <tr>
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>
5648 </tr>
5649 <tr>
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>
5652 </tr>
5653 <tr>
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>
5656 </tr>
5657 <tr>
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>
5660 </tr>
5661 <tr>
5662 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
5663 <td>Return location for error.</td>
5664 </tr>
5665 <tr>
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>
5668 </tr>
5669 <tr>
5670 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5671 <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>
5673 </tr>
5674 </tbody>
5675 </table></div>
5676 <p class="since">Since 2.26</p>
5677 </div>
5678 <hr>
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>
5688 <p>
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>.
5691 </p>
5692 <p>
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.
5696 </p>
5697 <p>
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.
5702 </p>
5703 <p>
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.
5709 </p>
5710 <p>
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.
5714 </p>
5715 <p>
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>.
5718 </p>
5719 <p>
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.
5726 </p>
5727 <p>
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.
5732 </p>
5733 <p>
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.
5735 </p>
5736 <div class="variablelist"><table border="0">
5737 <col align="left" valign="top">
5738 <tbody>
5739 <tr>
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>
5742 </tr>
5743 <tr>
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>
5746 </tr>
5747 <tr>
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>
5750 </tr>
5751 <tr>
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>
5754 </td>
5755 </tr>
5756 <tr>
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>
5759 </td>
5760 </tr>
5761 <tr>
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>
5764 </tr>
5765 <tr>
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>
5768 </tr>
5769 <tr>
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>
5773 </tr>
5774 </tbody>
5775 </table></div>
5776 <p class="since">Since 2.26</p>
5777 </div>
5778 <hr>
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>
5783 <p>
5784 Unregisters an object.
5785 </p>
5786 <div class="variablelist"><table border="0">
5787 <col align="left" valign="top">
5788 <tbody>
5789 <tr>
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>
5792 </tr>
5793 <tr>
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>
5796 </tr>
5797 <tr>
5798 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
5799 <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>
5801 </tr>
5802 </tbody>
5803 </table></div>
5804 <p class="since">Since 2.26</p>
5805 </div>
5806 <hr>
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;
5814 </pre>
5815 <p>
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>.
5817 </p>
5818 <div class="variablelist"><table border="0">
5819 <col align="left" valign="top">
5820 <tbody>
5821 <tr>
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>
5824 </tr>
5825 <tr>
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>
5828 </tr>
5829 <tr>
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>
5832 </tr>
5833 </tbody>
5834 </table></div>
5835 <p class="since">Since 2.26</p>
5836 </div>
5837 <hr>
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>
5844 <p>
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>.
5846 </p>
5847 <p>
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).
5852 </p>
5853 <p>
5854 Hierarchies are not supported; the items that you return should not
5855 contain the '/' character.
5856 </p>
5857 <p>
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>.
5859 </p>
5860 <div class="variablelist"><table border="0">
5861 <col align="left" valign="top">
5862 <tbody>
5863 <tr>
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>
5866 </tr>
5867 <tr>
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>
5870 </tr>
5871 <tr>
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>
5874 </tr>
5875 <tr>
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>
5878 </tr>
5879 <tr>
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>
5882 </tr>
5883 </tbody>
5884 </table></div>
5885 <p class="since">Since 2.26</p>
5886 </div>
5887 <hr>
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>
5895 <p>
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>.
5897 </p>
5898 <p>
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).
5901 </p>
5902 <p>
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
5904 at this node.
5905 </p>
5906 <p>
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>.
5912 </p>
5913 <p>
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>
5917 case.
5918 </p>
5919 <div class="variablelist"><table border="0">
5920 <col align="left" valign="top">
5921 <tbody>
5922 <tr>
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>
5925 </tr>
5926 <tr>
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>
5929 </tr>
5930 <tr>
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>
5933 </tr>
5934 <tr>
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>
5937 </tr>
5938 <tr>
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>
5941 </tr>
5942 <tr>
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>
5945 </tr>
5946 </tbody>
5947 </table></div>
5948 <p class="since">Since 2.26</p>
5949 </div>
5950 <hr>
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>
5961 <p>
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>.
5963 </p>
5964 <p>
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).
5967 </p>
5968 <div class="variablelist"><table border="0">
5969 <col align="left" valign="top">
5970 <tbody>
5971 <tr>
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>
5974 </tr>
5975 <tr>
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>
5978 </tr>
5979 <tr>
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>
5982 </tr>
5983 <tr>
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>
5986 </tr>
5987 <tr>
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>
5990 </tr>
5991 <tr>
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>
5994 </tr>
5995 <tr>
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>
5998 </tr>
5999 <tr>
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>
6002 </tr>
6003 </tbody>
6004 </table></div>
6005 <p class="since">Since 2.26</p>
6006 </div>
6007 <hr>
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&lt;&lt;0)
6013 } GDBusSubtreeFlags;
6014 </pre>
6015 <p>
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>.
6017 </p>
6018 <div class="variablelist"><table border="0">
6019 <col align="left" valign="top">
6020 <tbody>
6021 <tr>
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>
6023 <td>No flags set.
6024 </td>
6025 </tr>
6026 <tr>
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.
6031 </td>
6032 </tr>
6033 </tbody>
6034 </table></div>
6035 <p class="since">Since 2.26</p>
6036 </div>
6037 <hr>
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>
6047 <p>
6048 Registers a whole subtree of <span class="quote">“<span class="quote">dynamic</span>”</span> objects.
6049 </p>
6050 <p>
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>.
6054 </p>
6055 <p>
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
6063 the request.
6064 </p>
6065 <p>
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.
6068 </p>
6069 <p>
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>.
6072 </p>
6073 <p>
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>
6080 or other bindings.
6081 </p>
6082 <p>
6083 Note that <em class="parameter"><code>vtable</code></em> will be copied so you cannot change it after
6084 registration.
6085 </p>
6086 <p>
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.
6088 </p>
6089 <div class="variablelist"><table border="0">
6090 <col align="left" valign="top">
6091 <tbody>
6092 <tr>
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>
6095 </tr>
6096 <tr>
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>
6099 </tr>
6100 <tr>
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>
6103 </tr>
6104 <tr>
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>
6107 </tr>
6108 <tr>
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>
6111 </tr>
6112 <tr>
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>
6115 </tr>
6116 <tr>
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>
6119 </tr>
6120 <tr>
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>
6124 </tr>
6125 </tbody>
6126 </table></div>
6127 <p class="since">Since 2.26</p>
6128 </div>
6129 <hr>
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>
6135 <p>
6136 Unregisters a subtree.
6137 </p>
6138 <div class="variablelist"><table border="0">
6139 <col align="left" valign="top">
6140 <tbody>
6141 <tr>
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>
6144 </tr>
6145 <tr>
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>
6148 </tr>
6149 <tr>
6150 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
6151 <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>
6153 </tr>
6154 </tbody>
6155 </table></div>
6156 <p class="since">Since 2.26</p>
6157 </div>
6158 </div>
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>
6164 <p>
6165 A D-Bus address specifying potential endpoints that can be used
6166 when establishing the connection.
6167 </p>
6168 <p>Default value: NULL</p>
6169 <p class="since">Since 2.26</p>
6170 </div>
6171 <hr>
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>
6175 <p>
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>.
6177 </p>
6178 <p class="since">Since 2.26</p>
6179 </div>
6180 <hr>
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>
6184 <p>
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.
6187 </p>
6188 <p class="since">Since 2.26</p>
6189 </div>
6190 <hr>
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>
6194 <p>
6195 A boolean specifying whether the connection has been closed.
6196 </p>
6197 <p>Default value: FALSE</p>
6198 <p class="since">Since 2.26</p>
6199 </div>
6200 <hr>
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>
6204 <p>
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.
6208 </p>
6209 <p>
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>.
6212 </p>
6213 <p>Default value: FALSE</p>
6214 <p class="since">Since 2.26</p>
6215 </div>
6216 <hr>
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>
6220 <p>
6221 Flags from the <a class="link" href="GDBusConnection.html#GDBusConnectionFlags" title="enum GDBusConnectionFlags"><span class="type">GDBusConnectionFlags</span></a> enumeration.
6222 </p>
6223 <p class="since">Since 2.26</p>
6224 </div>
6225 <hr>
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>
6229 <p>
6230 The GUID of the peer performing the role of server when
6231 authenticating.
6232 </p>
6233 <p>
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.
6238 </p>
6239 <p>
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
6244 initialized.
6245 </p>
6246 <p>Default value: NULL</p>
6247 <p class="since">Since 2.26</p>
6248 </div>
6249 <hr>
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>
6253 <p>
6254 The underlying <a class="link" href="GIOStream.html" title="GIOStream"><span class="type">GIOStream</span></a> used for I/O.
6255 </p>
6256 <p>
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.
6259 </p>
6260 <p>
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.
6264 </p>
6265 <p class="since">Since 2.26</p>
6266 </div>
6267 <hr>
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>
6271 <p>
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.
6274 </p>
6275 <p>Default value: NULL</p>
6276 <p class="since">Since 2.26</p>
6277 </div>
6278 </div>
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>
6287 <p>
6288 Emitted when the connection is closed.
6289 </p>
6290 <p>
6291 The cause of this event can be
6292 </p>
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>.
6297 </p></li>
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.
6301 </p></li>
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>
6305    is set.
6306 </p></li>
6307 </ul></div>
6308 <p>
6309 </p>
6310 <p>
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
6313 once.
6314 </p>
6315 <div class="variablelist"><table border="0">
6316 <col align="left" valign="top">
6317 <tbody>
6318 <tr>
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>
6321 </tr>
6322 <tr>
6323 <td><p><span class="term"><em class="parameter"><code>remote_peer_vanished</code></em> :</span></p></td>
6324 <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>
6327 </tr>
6328 <tr>
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>
6331 </tr>
6332 <tr>
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>
6335 </tr>
6336 </tbody>
6337 </table></div>
6338 <p class="since">Since 2.26</p>
6339 </div>
6340 </div>
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.
6346 </p></div>
6347 </div>
6348 </div>
6349 <div class="footer">
6350 <hr>
6351           Generated by GTK-Doc V1.18</div>
6352 </body>
6353 </html>