Moving files to packaging and extracing new tarball.
[profile/ivi/glib2.git] / docs / reference / gio / html / GDBusServer.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>GDBusServer</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="GDBusMethodInvocation.html" title="GDBusMethodInvocation">
10 <link rel="next" href="GDBusAuthObserver.html" title="GDBusAuthObserver">
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="GDBusMethodInvocation.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="GDBusAuthObserver.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="#GDBusServer.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#GDBusServer.description" class="shortcut">Description</a>
27                    | 
28                   <a href="#GDBusServer.object-hierarchy" class="shortcut">Object Hierarchy</a>
29                    | 
30                   <a href="#GDBusServer.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
31                    | 
32                   <a href="#GDBusServer.properties" class="shortcut">Properties</a>
33                    | 
34                   <a href="#GDBusServer.signals" class="shortcut">Signals</a>
35 </td></tr>
36 </table>
37 <div class="refentry">
38 <a name="GDBusServer"></a><div class="titlepage"></div>
39 <div class="refnamediv"><table width="100%"><tr>
40 <td valign="top">
41 <h2><span class="refentrytitle"><a name="GDBusServer.top_of_page"></a>GDBusServer</span></h2>
42 <p>GDBusServer — Helper for accepting connections</p>
43 </td>
44 <td valign="top" align="right"></td>
45 </tr></table></div>
46 <div class="refsynopsisdiv">
47 <a name="GDBusServer.synopsis"></a><h2>Synopsis</h2>
48 <pre class="synopsis">
49 #include &lt;gio/gio.h&gt;
50
51                     <a class="link" href="GDBusServer.html#GDBusServer-struct" title="GDBusServer">GDBusServer</a>;
52 enum                <a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags">GDBusServerFlags</a>;
53 <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="returnvalue">GDBusServer</span></a> *       <a class="link" href="GDBusServer.html#g-dbus-server-new-sync" title="g_dbus_server_new_sync ()">g_dbus_server_new_sync</a>              (<em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *address</code></em>,
54                                                          <em class="parameter"><code><a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="type">GDBusServerFlags</span></a> flags</code></em>,
55                                                          <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *guid</code></em>,
56                                                          <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
57                                                          <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
58                                                          <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);
59 <span class="returnvalue">void</span>                <a class="link" href="GDBusServer.html#g-dbus-server-start" title="g_dbus_server_start ()">g_dbus_server_start</a>                 (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);
60 <span class="returnvalue">void</span>                <a class="link" href="GDBusServer.html#g-dbus-server-stop" title="g_dbus_server_stop ()">g_dbus_server_stop</a>                  (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);
61 <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="GDBusServer.html#g-dbus-server-is-active" title="g_dbus_server_is_active ()">g_dbus_server_is_active</a>             (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);
62 const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *       <a class="link" href="GDBusServer.html#g-dbus-server-get-guid" title="g_dbus_server_get_guid ()">g_dbus_server_get_guid</a>              (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);
63 <a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="returnvalue">GDBusServerFlags</span></a>    <a class="link" href="GDBusServer.html#g-dbus-server-get-flags" title="g_dbus_server_get_flags ()">g_dbus_server_get_flags</a>             (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);
64 const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *       <a class="link" href="GDBusServer.html#g-dbus-server-get-client-address" title="g_dbus_server_get_client_address ()">g_dbus_server_get_client_address</a>    (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);
65 </pre>
66 </div>
67 <div class="refsect1">
68 <a name="GDBusServer.object-hierarchy"></a><h2>Object Hierarchy</h2>
69 <pre class="synopsis">
70   <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#GObject">GObject</a>
71    +----GDBusServer
72 </pre>
73 </div>
74 <div class="refsect1">
75 <a name="GDBusServer.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
76 <p>
77 GDBusServer implements
78  <a class="link" href="GInitable.html" title="GInitable">GInitable</a>.</p>
79 </div>
80 <div class="refsect1">
81 <a name="GDBusServer.properties"></a><h2>Properties</h2>
82 <pre class="synopsis">
83   "<a class="link" href="GDBusServer.html#GDBusServer--active" title='The "active" property'>active</a>"                   <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read
84   "<a class="link" href="GDBusServer.html#GDBusServer--address" title='The "address" property'>address</a>"                  <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct Only
85   "<a class="link" href="GDBusServer.html#GDBusServer--authentication-observer" title='The "authentication-observer" property'>authentication-observer</a>"  <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a>*    : Read / Write / Construct Only
86   "<a class="link" href="GDBusServer.html#GDBusServer--client-address" title='The "client-address" property'>client-address</a>"           <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read
87   "<a class="link" href="GDBusServer.html#GDBusServer--flags" title='The "flags" property'>flags</a>"                    <a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="type">GDBusServerFlags</span></a>      : Read / Write / Construct Only
88   "<a class="link" href="GDBusServer.html#GDBusServer--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
89 </pre>
90 </div>
91 <div class="refsect1">
92 <a name="GDBusServer.signals"></a><h2>Signals</h2>
93 <pre class="synopsis">
94   "<a class="link" href="GDBusServer.html#GDBusServer-new-connection" title='The "new-connection" signal'>new-connection</a>"                                 : <a href="./../gobject/gobject/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS"><code class="literal">Run Last</code></a>
95 </pre>
96 </div>
97 <div class="refsect1">
98 <a name="GDBusServer.description"></a><h2>Description</h2>
99 <p>
100 <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> is a helper for listening to and accepting D-Bus
101 connections. This can be used to create a new D-Bus server, allowing two
102 peers to use the D-Bus protocol for their own specialized communication.
103 A server instance provided in this way will not perform message routing or
104 implement the org.freedesktop.DBus interface.
105 </p>
106 <p>
107 To just export an object on a well-known name on a message bus, such as the
108 session or system bus, you should instead use <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>.
109 </p>
110 <p>
111 </p>
112 <div class="example">
113 <a name="gdbus-peer-to-peer"></a><p class="title"><b>Example 6. D-Bus peer-to-peer example</b></p>
114 <div class="example-contents">
115   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
116     <tbody>
117       <tr>
118         <td class="listing_lines" align="right"><pre>1
119 2
120 3
121 4
122 5
123 6
124 7
125 8
126 9
127 10
128 11
129 12
130 13
131 14
132 15
133 16
134 17
135 18
136 19
137 20
138 21
139 22
140 23
141 24
142 25
143 26
144 27
145 28
146 29
147 30
148 31
149 32
150 33
151 34
152 35
153 36
154 37
155 38
156 39
157 40
158 41
159 42
160 43
161 44
162 45
163 46
164 47
165 48
166 49
167 50
168 51
169 52
170 53
171 54
172 55
173 56
174 57
175 58
176 59
177 60
178 61
179 62
180 63
181 64
182 65
183 66
184 67
185 68
186 69
187 70
188 71
189 72
190 73
191 74
192 75
193 76
194 77
195 78
196 79
197 80
198 81
199 82
200 83
201 84
202 85
203 86
204 87
205 88
206 89
207 90
208 91
209 92
210 93
211 94
212 95
213 96
214 97
215 98
216 99
217 100
218 101
219 102
220 103
221 104
222 105
223 106
224 107
225 108
226 109
227 110
228 111
229 112
230 113
231 114
232 115
233 116
234 117
235 118
236 119
237 120
238 121
239 122
240 123
241 124
242 125
243 126
244 127
245 128
246 129
247 130
248 131
249 132
250 133
251 134
252 135
253 136
254 137
255 138
256 139
257 140
258 141
259 142
260 143
261 144
262 145
263 146
264 147
265 148
266 149
267 150
268 151
269 152
270 153
271 154
272 155
273 156
274 157
275 158
276 159
277 160
278 161
279 162
280 163
281 164
282 165
283 166
284 167
285 168
286 169
287 170
288 171
289 172
290 173
291 174
292 175
293 176
294 177
295 178
296 179
297 180
298 181
299 182
300 183
301 184
302 185
303 186
304 187
305 188
306 189
307 190
308 191
309 192
310 193
311 194
312 195
313 196
314 197
315 198
316 199
317 200
318 201
319 202
320 203
321 204
322 205
323 206
324 207
325 208
326 209
327 210
328 211
329 212
330 213
331 214
332 215
333 216
334 217
335 218
336 219
337 220
338 221
339 222
340 223
341 224
342 225
343 226
344 227
345 228
346 229
347 230
348 231
349 232
350 233
351 234
352 235
353 236
354 237
355 238
356 239
357 240
358 241
359 242
360 243
361 244
362 245
363 246
364 247
365 248
366 249
367 250
368 251
369 252
370 253
371 254
372 255
373 256
374 257
375 258
376 259
377 260
378 261
379 262
380 263
381 264
382 265
383 266
384 267
385 268
386 269
387 270
388 271
389 272
390 273
391 274
392 275
393 276
394 277
395 278
396 279
397 280
398 281
399 282
400 283
401 284
402 285
403 286
404 287
405 288
406 289
407 290
408 291
409 292
410 293
411 294
412 295
413 296
414 297
415 298
416 299
417 300
418 301
419 302
420 303
421 304
422 305
423 306
424 307
425 308</pre></td>
426         <td class="listing_code"><pre class="programlisting"><span class="comment">/*</span>
427
428 <span class="comment">Usage examples (modulo addresses / credentials).</span>
429
430 <span class="comment">UNIX domain socket transport:</span>
431
432 <span class="comment"> Server:</span>
433 <span class="comment">   $ ./gdbus-example-peer --server --address unix:abstract=myaddr</span>
434 <span class="comment">   Server is listening at: unix:abstract=myaddr</span>
435 <span class="comment">   Client connected.</span>
436 <span class="comment">   Peer credentials: GCredentials:unix-user=500,unix-group=500,unix-process=13378</span>
437 <span class="comment">   Negotiated capabilities: unix-fd-passing=1</span>
438 <span class="comment">   Client said: Hey, it's 1273093080 already!</span>
439
440 <span class="comment"> Client:</span>
441 <span class="comment">   $ ./gdbus-example-peer --address unix:abstract=myaddr</span>
442 <span class="comment">   Connected.</span>
443 <span class="comment">   Negotiated capabilities: unix-fd-passing=1</span>
444 <span class="comment">   Server said: You said 'Hey, it's 1273093080 already!'. KTHXBYE!</span>
445
446 <span class="comment">Nonce-secured TCP transport on the same host:</span>
447
448 <span class="comment"> Server:</span>
449 <span class="comment">   $ ./gdbus-example-peer --server --address nonce-tcp:</span>
450 <span class="comment">   Server is listening at: nonce-tcp:host=localhost,port=43077,noncefile=/tmp/gdbus-nonce-file-X1ZNCV</span>
451 <span class="comment">   Client connected.</span>
452 <span class="comment">   Peer credentials: (no credentials received)</span>
453 <span class="comment">   Negotiated capabilities: unix-fd-passing=0</span>
454 <span class="comment">   Client said: Hey, it's 1273093206 already!</span>
455
456 <span class="comment"> Client:</span>
457 <span class="comment">   $ ./gdbus-example-peer -address nonce-tcp:host=localhost,port=43077,noncefile=/tmp/gdbus-nonce-file-X1ZNCV</span>
458 <span class="comment">   Connected.</span>
459 <span class="comment">   Negotiated capabilities: unix-fd-passing=0</span>
460 <span class="comment">   Server said: You said 'Hey, it's 1273093206 already!'. KTHXBYE!</span>
461
462 <span class="comment">TCP transport on two different hosts with a shared home directory:</span>
463
464 <span class="comment"> Server:</span>
465 <span class="comment">   host1 $ ./gdbus-example-peer --server --address tcp:host=0.0.0.0</span>
466 <span class="comment">   Server is listening at: tcp:host=0.0.0.0,port=46314</span>
467 <span class="comment">   Client connected.</span>
468 <span class="comment">   Peer credentials: (no credentials received)</span>
469 <span class="comment">   Negotiated capabilities: unix-fd-passing=0</span>
470 <span class="comment">   Client said: Hey, it's 1273093337 already!</span>
471
472 <span class="comment"> Client:</span>
473 <span class="comment">   host2 $ ./gdbus-example-peer -a tcp:host=host1,port=46314</span>
474 <span class="comment">   Connected.</span>
475 <span class="comment">   Negotiated capabilities: unix-fd-passing=0</span>
476 <span class="comment">   Server said: You said 'Hey, it's 1273093337 already!'. KTHXBYE!</span>
477
478 <span class="comment">TCP transport on two different hosts without authentication:</span>
479
480 <span class="comment"> Server:</span>
481 <span class="comment">   host1 $ ./gdbus-example-peer --server --address tcp:host=0.0.0.0 --allow-anonymous</span>
482 <span class="comment">   Server is listening at: tcp:host=0.0.0.0,port=59556</span>
483 <span class="comment">   Client connected.</span>
484 <span class="comment">   Peer credentials: (no credentials received)</span>
485 <span class="comment">   Negotiated capabilities: unix-fd-passing=0</span>
486 <span class="comment">   Client said: Hey, it's 1273093652 already!</span>
487
488 <span class="comment"> Client:</span>
489 <span class="comment">   host2 $ ./gdbus-example-peer -a tcp:host=host1,port=59556</span>
490 <span class="comment">   Connected.</span>
491 <span class="comment">   Negotiated capabilities: unix-fd-passing=0</span>
492 <span class="comment">   Server said: You said 'Hey, it's 1273093652 already!'. KTHXBYE!</span>
493
494 <span class="comment"> */</span>
495
496 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;gio/gio.h&gt;</span>
497 <span class="preproc">#include</span><span class="normal"> </span><span class="string">&lt;stdlib.h&gt;</span>
498
499 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
500
501 <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>
502
503 <span class="comment">/* Introspection data for the service we are exporting */</span>
504 <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>
505 <span class="normal">  </span><span class="string">"&lt;node&gt;"</span>
506 <span class="normal">  </span><span class="string">"  &lt;interface name='org.gtk.GDBus.TestPeerInterface'&gt;"</span>
507 <span class="normal">  </span><span class="string">"    &lt;method name='HelloWorld'&gt;"</span>
508 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='greeting' direction='in'/&gt;"</span>
509 <span class="normal">  </span><span class="string">"      &lt;arg type='s' name='response' direction='out'/&gt;"</span>
510 <span class="normal">  </span><span class="string">"    &lt;/method&gt;"</span>
511 <span class="normal">  </span><span class="string">"  &lt;/interface&gt;"</span>
512 <span class="normal">  </span><span class="string">"&lt;/node&gt;"</span><span class="symbol">;</span>
513
514 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
515
516 <span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
517 <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>
518 <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>
519 <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>
520 <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>
521 <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>
522 <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>
523 <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>
524 <span class="normal">                    </span><span class="usertype">gpointer</span><span class="normal">               user_data</span><span class="symbol">)</span>
525 <span class="cbracket">{</span>
526 <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>
527 <span class="normal">    </span><span class="cbracket">{</span>
528 <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>
529 <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>
530
531 <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>
532 <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 said '%s'. KTHXBYE!"</span><span class="symbol">,</span><span class="normal"> greeting</span><span class="symbol">);</span>
533 <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>
534 <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>
535 <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>
536 <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">"Client said: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> greeting</span><span class="symbol">);</span>
537 <span class="normal">    </span><span class="cbracket">}</span>
538 <span class="cbracket">}</span>
539
540 <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>
541 <span class="cbracket">{</span>
542 <span class="normal">  handle_method_call</span><span class="symbol">,</span>
543 <span class="normal">  <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
544 <span class="normal">  <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
545 <span class="cbracket">}</span><span class="symbol">;</span>
546
547 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
548
549 <span class="keyword">static</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#gboolean">gboolean</a></span>
550 <span class="function">on_new_connection</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GDBusServer</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">server</span><span class="symbol">,</span>
551 <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>
552 <span class="normal">                   </span><span class="usertype">gpointer</span><span class="normal"> user_data</span><span class="symbol">)</span>
553 <span class="cbracket">{</span>
554 <span class="normal">  </span><span class="usertype">guint</span><span class="normal"> registration_id</span><span class="symbol">;</span>
555 <span class="normal">  </span><span class="usertype">GCredentials</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">credentials</span><span class="symbol">;</span>
556 <span class="normal">  </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">s</span><span class="symbol">;</span>
557
558 <span class="normal">  credentials </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-get-peer-credentials">g_dbus_connection_get_peer_credentials</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">);</span>
559 <span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">credentials </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>
560 <span class="normal">    s </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">"(no credentials received)"</span><span class="symbol">);</span>
561 <span class="normal">  </span><span class="keyword">else</span>
562 <span class="normal">    s </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GCredentials.html#g-credentials-to-string">g_credentials_to_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">credentials</span><span class="symbol">);</span>
563
564
565 <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">"Client connected.</span><span class="specialchar">\n</span><span class="string">"</span>
566 <span class="normal">           </span><span class="string">"Peer credentials: %s</span><span class="specialchar">\n</span><span class="string">"</span>
567 <span class="normal">           </span><span class="string">"Negotiated capabilities: unix-fd-passing=%d</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span>
568 <span class="normal">           s</span><span class="symbol">,</span>
569 <span class="normal">           </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>
570
571 <span class="normal">  </span><span class="function"><a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-ref">g_object_ref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">);</span>
572 <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>
573 <span class="normal">                                                       </span><span class="string">"/org/gtk/GDBus/TestObject"</span><span class="symbol">,</span>
574 <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>
575 <span class="normal">                                                       </span><span class="symbol">&amp;</span><span class="normal">interface_vtable</span><span class="symbol">,</span>
576 <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>
577 <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>
578 <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>
579 <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>
580
581 <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>
582 <span class="cbracket">}</span>
583
584 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
585
586 <span class="type">int</span>
587 <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>
588 <span class="cbracket">{</span>
589 <span class="normal">  </span><span class="usertype">gint</span><span class="normal"> ret</span><span class="symbol">;</span>
590 <span class="normal">  </span><span class="usertype">gboolean</span><span class="normal"> opt_server</span><span class="symbol">;</span>
591 <span class="normal">  </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">opt_address</span><span class="symbol">;</span>
592 <span class="normal">  </span><span class="usertype">GOptionContext</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">opt_context</span><span class="symbol">;</span>
593 <span class="normal">  </span><span class="usertype">gboolean</span><span class="normal"> opt_allow_anonymous</span><span class="symbol">;</span>
594 <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>
595 <span class="normal">  </span><span class="usertype">GOptionEntry</span><span class="normal"> opt_entries</span><span class="symbol">[]</span><span class="normal"> </span><span class="symbol">=</span>
596 <span class="normal">    </span><span class="cbracket">{</span>
597 <span class="normal">      </span><span class="cbracket">{</span><span class="normal"> </span><span class="string">"server"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">'s'</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Commandline-option-parser.html#G-OPTION-ARG-NONE:CAPS">G_OPTION_ARG_NONE</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">opt_server</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Start a server instead of a client"</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a> </span><span class="cbracket">}</span><span class="symbol">,</span>
598 <span class="normal">      </span><span class="cbracket">{</span><span class="normal"> </span><span class="string">"address"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">'a'</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Commandline-option-parser.html#G-OPTION-ARG-STRING:CAPS">G_OPTION_ARG_STRING</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">opt_address</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"D-Bus address to use"</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a> </span><span class="cbracket">}</span><span class="symbol">,</span>
599 <span class="normal">      </span><span class="cbracket">{</span><span class="normal"> </span><span class="string">"allow-anonymous"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">'n'</span><span class="symbol">,</span><span class="normal"> </span><span class="number">0</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Commandline-option-parser.html#G-OPTION-ARG-NONE:CAPS">G_OPTION_ARG_NONE</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">opt_allow_anonymous</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Allow anonymous authentication"</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a> </span><span class="cbracket">}</span><span class="symbol">,</span>
600 <span class="normal">      </span><span class="cbracket">{</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="cbracket">}</span>
601 <span class="normal">    </span><span class="cbracket">}</span><span class="symbol">;</span>
602
603 <span class="normal">  ret </span><span class="symbol">=</span><span class="normal"> </span><span class="number">1</span><span class="symbol">;</span>
604
605 <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>
606
607 <span class="normal">  opt_address </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>
608 <span class="normal">  opt_server </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>
609 <span class="normal">  opt_allow_anonymous </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>
610
611 <span class="normal">  opt_context </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Commandline-option-parser.html#g-option-context-new">g_option_context_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"peer-to-peer example"</span><span class="symbol">);</span>
612 <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>
613 <span class="normal">  </span><span class="function"><a href="./../glib/glib/glib-Commandline-option-parser.html#g-option-context-add-main-entries">g_option_context_add_main_entries</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">opt_context</span><span class="symbol">,</span><span class="normal"> opt_entries</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>
614 <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-Commandline-option-parser.html#g-option-context-parse">g_option_context_parse</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">opt_context</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">argc</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">argv</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">))</span>
615 <span class="normal">    </span><span class="cbracket">{</span>
616 <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 parsing options: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
617 <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>
618 <span class="normal">      </span><span class="keyword">goto</span><span class="normal"> out</span><span class="symbol">;</span>
619 <span class="normal">    </span><span class="cbracket">}</span>
620 <span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">opt_address </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>
621 <span class="normal">    </span><span class="cbracket">{</span>
622 <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">"Incorrect usage, try --help.</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span>
623 <span class="normal">      </span><span class="keyword">goto</span><span class="normal"> out</span><span class="symbol">;</span>
624 <span class="normal">    </span><span class="cbracket">}</span>
625 <span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(!</span><span class="normal">opt_server </span><span class="symbol">&amp;&amp;</span><span class="normal"> opt_allow_anonymous</span><span class="symbol">)</span>
626 <span class="normal">    </span><span class="cbracket">{</span>
627 <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">"The --allow-anonymous option only makes sense when used with --server.</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span>
628 <span class="normal">      </span><span class="keyword">goto</span><span class="normal"> out</span><span class="symbol">;</span>
629 <span class="normal">    </span><span class="cbracket">}</span>
630
631 <span class="normal">  </span><span class="comment">/* We are lazy here - we don't want to manually provide</span>
632 <span class="comment">   * the introspection data structures - so we just build</span>
633 <span class="comment">   * them from XML.</span>
634 <span class="comment">   */</span>
635 <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>
636 <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>
637
638 <span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">opt_server</span><span class="symbol">)</span>
639 <span class="normal">    </span><span class="cbracket">{</span>
640 <span class="normal">      </span><span class="usertype">GDBusServer</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">server</span><span class="symbol">;</span>
641 <span class="normal">      </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">guid</span><span class="symbol">;</span>
642 <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>
643 <span class="normal">      </span><span class="usertype">GDBusServerFlags</span><span class="normal"> server_flags</span><span class="symbol">;</span>
644
645 <span class="normal">      guid </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="gio-D-Bus-Utilities.html#g-dbus-generate-guid">g_dbus_generate_guid</a></span><span class="normal"> </span><span class="symbol">();</span>
646
647 <span class="normal">      server_flags </span><span class="symbol">=</span><span class="normal"> <a href="GDBusServer.html#G-DBUS-SERVER-FLAGS-NONE:CAPS">G_DBUS_SERVER_FLAGS_NONE</a></span><span class="symbol">;</span>
648 <span class="normal">      </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">opt_allow_anonymous</span><span class="symbol">)</span>
649 <span class="normal">        server_flags </span><span class="symbol">|=</span><span class="normal"> <a href="GDBusServer.html#G-DBUS-SERVER-FLAGS-AUTHENTICATION-ALLOW-ANONYMOUS:CAPS">G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS</a></span><span class="symbol">;</span>
650
651 <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>
652 <span class="normal">      server </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusServer.html#g-dbus-server-new-sync">g_dbus_server_new_sync</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">opt_address</span><span class="symbol">,</span>
653 <span class="normal">                                       server_flags</span><span class="symbol">,</span>
654 <span class="normal">                                       guid</span><span class="symbol">,</span>
655 <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">/* GDBusAuthObserver */</span>
656 <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">/* GCancellable */</span>
657 <span class="normal">                                       </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>
658 <span class="normal">      </span><span class="function"><a href="GDBusServer.html#g-dbus-server-start">g_dbus_server_start</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">server</span><span class="symbol">);</span>
659 <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">guid</span><span class="symbol">);</span>
660
661 <span class="normal">      </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">server </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>
662 <span class="normal">        </span><span class="cbracket">{</span>
663 <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 creating server at address %s: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> opt_address</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
664 <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>
665 <span class="normal">          </span><span class="keyword">goto</span><span class="normal"> out</span><span class="symbol">;</span>
666 <span class="normal">        </span><span class="cbracket">}</span>
667 <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">"Server is listening at: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="GDBusServer.html#g-dbus-server-get-client-address">g_dbus_server_get_client_address</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">server</span><span class="symbol">));</span>
668 <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">server</span><span class="symbol">,</span>
669 <span class="normal">                        </span><span class="string">"new-connection"</span><span class="symbol">,</span>
670 <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">on_new_connection</span><span class="symbol">),</span>
671 <span class="normal">                        <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
672
673 <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>
674 <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>
675
676 <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">server</span><span class="symbol">);</span>
677 <span class="normal">      </span><span class="function"><a href="./../glib/glib/glib-The-Main-Event-Loop.html#g-main-loop-unref">g_main_loop_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">loop</span><span class="symbol">);</span>
678 <span class="normal">    </span><span class="cbracket">}</span>
679 <span class="normal">  </span><span class="keyword">else</span>
680 <span class="normal">    </span><span class="cbracket">{</span>
681 <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>
682 <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_response</span><span class="symbol">;</span>
683 <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>
684 <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>
685
686 <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>
687 <span class="normal">      connection </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDBusConnection.html#g-dbus-connection-new-for-address-sync">g_dbus_connection_new_for_address_sync</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">opt_address</span><span class="symbol">,</span>
688 <span class="normal">                                                           <a href="GDBusConnection.html#G-DBUS-CONNECTION-FLAGS-AUTHENTICATION-CLIENT:CAPS">G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT</a></span><span class="symbol">,</span>
689 <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">/* GDBusAuthObserver */</span>
690 <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">/* GCancellable */</span>
691 <span class="normal">                                                           </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>
692 <span class="normal">      </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection </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>
693 <span class="normal">        </span><span class="cbracket">{</span>
694 <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 connecting to D-Bus address %s: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> opt_address</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
695 <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>
696 <span class="normal">          </span><span class="keyword">goto</span><span class="normal"> out</span><span class="symbol">;</span>
697 <span class="normal">        </span><span class="cbracket">}</span>
698
699 <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">"Connected.</span><span class="specialchar">\n</span><span class="string">"</span>
700 <span class="normal">               </span><span class="string">"Negotiated capabilities: unix-fd-passing=%d</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span>
701 <span class="normal">               </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>
702
703 <span class="normal">      greeting </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">"Hey, it's %"</span><span class="normal"> <a href="./../glib/glib/glib-Basic-Types.html#G-GUINT64-FORMAT:CAPS">G_GUINT64_FORMAT</a> </span><span class="string">" already!"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="./../glib/glib/glib-Basic-Types.html#guint64">guint64</a></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>
704 <span class="normal">      value </span><span class="symbol">=</span><span class="normal"> </span><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>
705 <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">/* bus_name */</span>
706 <span class="normal">                                           </span><span class="string">"/org/gtk/GDBus/TestObject"</span><span class="symbol">,</span>
707 <span class="normal">                                           </span><span class="string">"org.gtk.GDBus.TestPeerInterface"</span><span class="symbol">,</span>
708 <span class="normal">                                           </span><span class="string">"HelloWorld"</span><span class="symbol">,</span>
709 <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"> greeting</span><span class="symbol">),</span>
710 <span class="normal">                                           </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">"(s)"</span><span class="symbol">),</span>
711 <span class="normal">                                           <a href="GDBusConnection.html#G-DBUS-CALL-FLAGS-NONE:CAPS">G_DBUS_CALL_FLAGS_NONE</a></span><span class="symbol">,</span>
712 <span class="normal">                                           </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">,</span>
713 <span class="normal">                                           <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span>
714 <span class="normal">                                           </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>
715 <span class="normal">      </span><span class="keyword">if</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>
716 <span class="normal">        </span><span class="cbracket">{</span>
717 <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 HelloWorld(): %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
718 <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>
719 <span class="normal">          </span><span class="keyword">goto</span><span class="normal"> out</span><span class="symbol">;</span>
720 <span class="normal">        </span><span class="cbracket">}</span>
721 <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">value</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_response</span><span class="symbol">);</span>
722 <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">"Server said: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> greeting_response</span><span class="symbol">);</span>
723 <span class="normal">      </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-unref">g_variant_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">);</span>
724
725 <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">connection</span><span class="symbol">);</span>
726 <span class="normal">    </span><span class="cbracket">}</span>
727 <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>
728
729 <span class="normal">  ret </span><span class="symbol">=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
730
731 <span class="label"> out:</span>
732 <span class="normal">  </span><span class="keyword">return</span><span class="normal"> ret</span><span class="symbol">;</span>
733 <span class="cbracket">}</span></pre></td>
734       </tr>
735     </tbody>
736   </table>
737 </div>
738
739 </div>
740 <p><br class="example-break">
741 </p>
742 </div>
743 <div class="refsect1">
744 <a name="GDBusServer.details"></a><h2>Details</h2>
745 <div class="refsect2">
746 <a name="GDBusServer-struct"></a><h3>GDBusServer</h3>
747 <pre class="programlisting">typedef struct _GDBusServer GDBusServer;</pre>
748 <p>
749 The <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> structure contains only private data and
750 should only be accessed using the provided API.
751 </p>
752 <p class="since">Since 2.26</p>
753 </div>
754 <hr>
755 <div class="refsect2">
756 <a name="GDBusServerFlags"></a><h3>enum GDBusServerFlags</h3>
757 <pre class="programlisting">typedef enum {
758   G_DBUS_SERVER_FLAGS_NONE = 0,
759   G_DBUS_SERVER_FLAGS_RUN_IN_THREAD = (1&lt;&lt;0),
760   G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1&lt;&lt;1)
761 } GDBusServerFlags;
762 </pre>
763 <p>
764 Flags used when creating a <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>.
765 </p>
766 <div class="variablelist"><table border="0">
767 <col align="left" valign="top">
768 <tbody>
769 <tr>
770 <td><p><a name="G-DBUS-SERVER-FLAGS-NONE:CAPS"></a><span class="term"><code class="literal">G_DBUS_SERVER_FLAGS_NONE</code></span></p></td>
771 <td>No flags set.
772 </td>
773 </tr>
774 <tr>
775 <td><p><a name="G-DBUS-SERVER-FLAGS-RUN-IN-THREAD:CAPS"></a><span class="term"><code class="literal">G_DBUS_SERVER_FLAGS_RUN_IN_THREAD</code></span></p></td>
776 <td>All <a class="link" href="GDBusServer.html#GDBusServer-new-connection" title='The "new-connection" signal'><span class="type">"new-connection"</span></a>
777 signals will run in separated dedicated threads (see signal for
778 details).
779 </td>
780 </tr>
781 <tr>
782 <td><p><a name="G-DBUS-SERVER-FLAGS-AUTHENTICATION-ALLOW-ANONYMOUS:CAPS"></a><span class="term"><code class="literal">G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS</code></span></p></td>
783 <td>Allow the anonymous
784 authentication method.
785 </td>
786 </tr>
787 </tbody>
788 </table></div>
789 <p class="since">Since 2.26</p>
790 </div>
791 <hr>
792 <div class="refsect2">
793 <a name="g-dbus-server-new-sync"></a><h3>g_dbus_server_new_sync ()</h3>
794 <pre class="programlisting"><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="returnvalue">GDBusServer</span></a> *       g_dbus_server_new_sync              (<em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *address</code></em>,
795                                                          <em class="parameter"><code><a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="type">GDBusServerFlags</span></a> flags</code></em>,
796                                                          <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *guid</code></em>,
797                                                          <em class="parameter"><code><a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a> *observer</code></em>,
798                                                          <em class="parameter"><code><a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> *cancellable</code></em>,
799                                                          <em class="parameter"><code><a href="./../glib/glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
800 <p>
801 Creates a new D-Bus server that listens on the first address in
802 <em class="parameter"><code>address</code></em> that works.
803 </p>
804 <p>
805 Once constructed, you can use <a class="link" href="GDBusServer.html#g-dbus-server-get-client-address" title="g_dbus_server_get_client_address ()"><code class="function">g_dbus_server_get_client_address()</code></a> to
806 get a D-Bus address string that clients can use to connect.
807 </p>
808 <p>
809 Connect to the <a class="link" href="GDBusServer.html#GDBusServer-new-connection" title='The "new-connection" signal'><span class="type">"new-connection"</span></a> signal to handle
810 incoming connections.
811 </p>
812 <p>
813 The returned <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> isn't active - you have to start it with
814 <a class="link" href="GDBusServer.html#g-dbus-server-start" title="g_dbus_server_start ()"><code class="function">g_dbus_server_start()</code></a>.
815 </p>
816 <p>
817 See <a class="xref" href="GDBusServer.html#gdbus-peer-to-peer" title="Example 6. D-Bus peer-to-peer example">Example 6, “D-Bus peer-to-peer example”</a> for how <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> can
818 be used.
819 </p>
820 <p>
821 This is a synchronous failable constructor. See
822 <code class="function">g_dbus_server_new()</code> for the asynchronous version.
823 </p>
824 <div class="variablelist"><table border="0">
825 <col align="left" valign="top">
826 <tbody>
827 <tr>
828 <td><p><span class="term"><em class="parameter"><code>address</code></em> :</span></p></td>
829 <td>A D-Bus address.</td>
830 </tr>
831 <tr>
832 <td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td>
833 <td>Flags from the <a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="type">GDBusServerFlags</span></a> enumeration.</td>
834 </tr>
835 <tr>
836 <td><p><span class="term"><em class="parameter"><code>guid</code></em> :</span></p></td>
837 <td>A D-Bus GUID.</td>
838 </tr>
839 <tr>
840 <td><p><span class="term"><em class="parameter"><code>observer</code></em> :</span></p></td>
841 <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>
842 </td>
843 </tr>
844 <tr>
845 <td><p><span class="term"><em class="parameter"><code>cancellable</code></em> :</span></p></td>
846 <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>.</td>
847 </tr>
848 <tr>
849 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
850 <td>Return location for server or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</td>
851 </tr>
852 <tr>
853 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
854 <td>A <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</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
855 <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</td>
856 </tr>
857 </tbody>
858 </table></div>
859 <p class="since">Since 2.26</p>
860 </div>
861 <hr>
862 <div class="refsect2">
863 <a name="g-dbus-server-start"></a><h3>g_dbus_server_start ()</h3>
864 <pre class="programlisting"><span class="returnvalue">void</span>                g_dbus_server_start                 (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);</pre>
865 <p>
866 Starts <em class="parameter"><code>server</code></em>.
867 </p>
868 <div class="variablelist"><table border="0">
869 <col align="left" valign="top">
870 <tbody><tr>
871 <td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
872 <td>A <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>.</td>
873 </tr></tbody>
874 </table></div>
875 <p class="since">Since 2.26</p>
876 </div>
877 <hr>
878 <div class="refsect2">
879 <a name="g-dbus-server-stop"></a><h3>g_dbus_server_stop ()</h3>
880 <pre class="programlisting"><span class="returnvalue">void</span>                g_dbus_server_stop                  (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);</pre>
881 <p>
882 Stops <em class="parameter"><code>server</code></em>.
883 </p>
884 <div class="variablelist"><table border="0">
885 <col align="left" valign="top">
886 <tbody><tr>
887 <td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
888 <td>A <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>.</td>
889 </tr></tbody>
890 </table></div>
891 <p class="since">Since 2.26</p>
892 </div>
893 <hr>
894 <div class="refsect2">
895 <a name="g-dbus-server-is-active"></a><h3>g_dbus_server_is_active ()</h3>
896 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            g_dbus_server_is_active             (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);</pre>
897 <p>
898 Gets whether <em class="parameter"><code>server</code></em> is active.
899 </p>
900 <div class="variablelist"><table border="0">
901 <col align="left" valign="top">
902 <tbody>
903 <tr>
904 <td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
905 <td>A <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>.</td>
906 </tr>
907 <tr>
908 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
909 <td>
910 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if server is active, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</td>
911 </tr>
912 </tbody>
913 </table></div>
914 <p class="since">Since 2.26</p>
915 </div>
916 <hr>
917 <div class="refsect2">
918 <a name="g-dbus-server-get-guid"></a><h3>g_dbus_server_get_guid ()</h3>
919 <pre class="programlisting">const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *       g_dbus_server_get_guid              (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);</pre>
920 <p>
921 Gets the GUID for <em class="parameter"><code>server</code></em>.
922 </p>
923 <div class="variablelist"><table border="0">
924 <col align="left" valign="top">
925 <tbody>
926 <tr>
927 <td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
928 <td>A <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>.</td>
929 </tr>
930 <tr>
931 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
932 <td>A D-Bus GUID. Do not free this string, it is owned by <em class="parameter"><code>server</code></em>.</td>
933 </tr>
934 </tbody>
935 </table></div>
936 <p class="since">Since 2.26</p>
937 </div>
938 <hr>
939 <div class="refsect2">
940 <a name="g-dbus-server-get-flags"></a><h3>g_dbus_server_get_flags ()</h3>
941 <pre class="programlisting"><a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="returnvalue">GDBusServerFlags</span></a>    g_dbus_server_get_flags             (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);</pre>
942 <p>
943 Gets the flags for <em class="parameter"><code>server</code></em>.
944 </p>
945 <div class="variablelist"><table border="0">
946 <col align="left" valign="top">
947 <tbody>
948 <tr>
949 <td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
950 <td>A <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>.</td>
951 </tr>
952 <tr>
953 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
954 <td>A set of flags from the <a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="type">GDBusServerFlags</span></a> enumeration.</td>
955 </tr>
956 </tbody>
957 </table></div>
958 <p class="since">Since 2.26</p>
959 </div>
960 <hr>
961 <div class="refsect2">
962 <a name="g-dbus-server-get-client-address"></a><h3>g_dbus_server_get_client_address ()</h3>
963 <pre class="programlisting">const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *       g_dbus_server_get_client_address    (<em class="parameter"><code><a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> *server</code></em>);</pre>
964 <p>
965 Gets a D-Bus address string that can be used by clients to connect
966 to <em class="parameter"><code>server</code></em>.
967 </p>
968 <div class="variablelist"><table border="0">
969 <col align="left" valign="top">
970 <tbody>
971 <tr>
972 <td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
973 <td>A <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>.</td>
974 </tr>
975 <tr>
976 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
977 <td>A D-Bus address string. Do not free, the string is owned
978 by <em class="parameter"><code>server</code></em>.</td>
979 </tr>
980 </tbody>
981 </table></div>
982 <p class="since">Since 2.26</p>
983 </div>
984 </div>
985 <div class="refsect1">
986 <a name="GDBusServer.property-details"></a><h2>Property Details</h2>
987 <div class="refsect2">
988 <a name="GDBusServer--active"></a><h3>The <code class="literal">"active"</code> property</h3>
989 <pre class="programlisting">  "active"                   <a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a>              : Read</pre>
990 <p>
991 Whether the server is currently active.
992 </p>
993 <p>Default value: FALSE</p>
994 <p class="since">Since 2.26</p>
995 </div>
996 <hr>
997 <div class="refsect2">
998 <a name="GDBusServer--address"></a><h3>The <code class="literal">"address"</code> property</h3>
999 <pre class="programlisting">  "address"                  <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct Only</pre>
1000 <p>
1001 The D-Bus address to listen on.
1002 </p>
1003 <p>Default value: NULL</p>
1004 <p class="since">Since 2.26</p>
1005 </div>
1006 <hr>
1007 <div class="refsect2">
1008 <a name="GDBusServer--authentication-observer"></a><h3>The <code class="literal">"authentication-observer"</code> property</h3>
1009 <pre class="programlisting">  "authentication-observer"  <a class="link" href="GDBusAuthObserver.html" title="GDBusAuthObserver"><span class="type">GDBusAuthObserver</span></a>*    : Read / Write / Construct Only</pre>
1010 <p>
1011 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>.
1012 </p>
1013 <p class="since">Since 2.26</p>
1014 </div>
1015 <hr>
1016 <div class="refsect2">
1017 <a name="GDBusServer--client-address"></a><h3>The <code class="literal">"client-address"</code> property</h3>
1018 <pre class="programlisting">  "client-address"           <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read</pre>
1019 <p>
1020 The D-Bus address that clients can use.
1021 </p>
1022 <p>Default value: NULL</p>
1023 <p class="since">Since 2.26</p>
1024 </div>
1025 <hr>
1026 <div class="refsect2">
1027 <a name="GDBusServer--flags"></a><h3>The <code class="literal">"flags"</code> property</h3>
1028 <pre class="programlisting">  "flags"                    <a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="type">GDBusServerFlags</span></a>      : Read / Write / Construct Only</pre>
1029 <p>
1030 Flags from the <a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="type">GDBusServerFlags</span></a> enumeration.
1031 </p>
1032 <p class="since">Since 2.26</p>
1033 </div>
1034 <hr>
1035 <div class="refsect2">
1036 <a name="GDBusServer--guid"></a><h3>The <code class="literal">"guid"</code> property</h3>
1037 <pre class="programlisting">  "guid"                     <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write / Construct Only</pre>
1038 <p>
1039 The guid of the server.
1040 </p>
1041 <p>Default value: NULL</p>
1042 <p class="since">Since 2.26</p>
1043 </div>
1044 </div>
1045 <div class="refsect1">
1046 <a name="GDBusServer.signal-details"></a><h2>Signal Details</h2>
1047 <div class="refsect2">
1048 <a name="GDBusServer-new-connection"></a><h3>The <code class="literal">"new-connection"</code> signal</h3>
1049 <pre class="programlisting"><a href="./../glib/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            user_function                      (<a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>     *server,
1050                                                         <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> *connection,
1051                                                         <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>
1052 <p>
1053 Emitted when a new authenticated connection has been made. Use
1054 <a class="link" href="GDBusConnection.html#g-dbus-connection-get-peer-credentials" title="g_dbus_connection_get_peer_credentials ()"><code class="function">g_dbus_connection_get_peer_credentials()</code></a> to figure out what
1055 identity (if any), was authenticated.
1056 </p>
1057 <p>
1058 If you want to accept the connection, take a reference to the
1059 <em class="parameter"><code>connection</code></em> object and return <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>. When you are done with the
1060 connection call <a class="link" href="GDBusConnection.html#g-dbus-connection-close" title="g_dbus_connection_close ()"><code class="function">g_dbus_connection_close()</code></a> and give up your
1061 reference. Note that the other peer may disconnect at any time -
1062 a typical thing to do when accepting a connection is to listen to
1063 the <a class="link" href="GDBusConnection.html#GDBusConnection-closed" title='The "closed" signal'><span class="type">"closed"</span></a> signal.
1064 </p>
1065 <p>
1066 If <a class="link" href="GDBusServer.html#GDBusServer--flags" title='The "flags" property'><span class="type">"flags"</span></a> contains <a class="link" href="GDBusServer.html#G-DBUS-SERVER-FLAGS-RUN-IN-THREAD:CAPS"><code class="literal">G_DBUS_SERVER_FLAGS_RUN_IN_THREAD</code></a>
1067 then the signal is emitted in a new thread dedicated to the
1068 connection. Otherwise the signal is emitted in the <GTKDOCLINK HREF="g-main-context-push-thread-default">thread-default main
1069 loop</GTKDOCLINK> of the thread that <em class="parameter"><code>server</code></em> was constructed in.
1070 </p>
1071 <p>
1072 You are guaranteed that signal handlers for this signal runs
1073 before incoming messages on <em class="parameter"><code>connection</code></em> are processed. This means
1074 that it's suitable to call <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> or
1075 similar from the signal handler.
1076 </p>
1077 <div class="variablelist"><table border="0">
1078 <col align="left" valign="top">
1079 <tbody>
1080 <tr>
1081 <td><p><span class="term"><em class="parameter"><code>server</code></em> :</span></p></td>
1082 <td>The <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a> emitting the signal.</td>
1083 </tr>
1084 <tr>
1085 <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td>
1086 <td>A <a class="link" href="GDBusConnection.html" title="GDBusConnection"><span class="type">GDBusConnection</span></a> for the new connection.</td>
1087 </tr>
1088 <tr>
1089 <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
1090 <td>user data set when the signal handler was connected.</td>
1091 </tr>
1092 <tr>
1093 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
1094 <td>
1095 <a href="./../glib/glib/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> to claim <em class="parameter"><code>connection</code></em>, <a href="./../glib/glib/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to let other handlers
1096 run.</td>
1097 </tr>
1098 </tbody>
1099 </table></div>
1100 <p class="since">Since 2.26</p>
1101 </div>
1102 </div>
1103 </div>
1104 <div class="footer">
1105 <hr>
1106           Generated by GTK-Doc V1.18</div>
1107 </body>
1108 </html>