1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>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">
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
17 <td><a accesskey="p" href="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>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#GDBusServer.synopsis" class="shortcut">Top</a>
26 <a href="#GDBusServer.description" class="shortcut">Description</a>
28 <a href="#GDBusServer.object-hierarchy" class="shortcut">Object Hierarchy</a>
30 <a href="#GDBusServer.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
32 <a href="#GDBusServer.properties" class="shortcut">Properties</a>
34 <a href="#GDBusServer.signals" class="shortcut">Signals</a>
37 <div class="refentry">
38 <a name="GDBusServer"></a><div class="titlepage"></div>
39 <div class="refnamediv"><table width="100%"><tr>
41 <h2><span class="refentrytitle"><a name="GDBusServer.top_of_page"></a>GDBusServer</span></h2>
42 <p>GDBusServer — Helper for accepting connections</p>
44 <td valign="top" align="right"></td>
46 <div class="refsynopsisdiv">
47 <a name="GDBusServer.synopsis"></a><h2>Synopsis</h2>
48 <pre class="synopsis">
49 #include <gio/gio.h>
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>);
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>
74 <div class="refsect1">
75 <a name="GDBusServer.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
77 GDBusServer implements
78 <a class="link" href="GInitable.html" title="GInitable">GInitable</a>.</p>
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
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>
97 <div class="refsect1">
98 <a name="GDBusServer.description"></a><h2>Description</h2>
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.
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>.
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">
118 <td class="listing_lines" align="right"><pre>1
426 <td class="listing_code"><pre class="programlisting"><span class="comment">/*</span>
428 <span class="comment">Usage examples (modulo addresses / credentials).</span>
430 <span class="comment">UNIX domain socket transport:</span>
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>
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>
446 <span class="comment">Nonce-secured TCP transport on the same host:</span>
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>
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>
462 <span class="comment">TCP transport on two different hosts with a shared home directory:</span>
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>
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>
478 <span class="comment">TCP transport on two different hosts without authentication:</span>
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>
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>
494 <span class="comment"> */</span>
496 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><gio/gio.h></span>
497 <span class="preproc">#include</span><span class="normal"> </span><span class="string"><stdlib.h></span>
499 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
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>
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">"<node>"</span>
506 <span class="normal"> </span><span class="string">" <interface name='org.gtk.GDBus.TestPeerInterface'>"</span>
507 <span class="normal"> </span><span class="string">" <method name='HelloWorld'>"</span>
508 <span class="normal"> </span><span class="string">" <arg type='s' name='greeting' direction='in'/>"</span>
509 <span class="normal"> </span><span class="string">" <arg type='s' name='response' direction='out'/>"</span>
510 <span class="normal"> </span><span class="string">" </method>"</span>
511 <span class="normal"> </span><span class="string">" </interface>"</span>
512 <span class="normal"> </span><span class="string">"</node>"</span><span class="symbol">;</span>
514 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
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>
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">"(&s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</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>
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>
547 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
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>
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>
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">&</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>
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">-></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">&</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">></span><span class="normal"> </span><span class="number">0</span><span class="symbol">);</span>
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>
584 <span class="comment">/* ---------------------------------------------------------------------------------------------------- */</span>
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">&</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">&</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">&</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>
603 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="number">1</span><span class="symbol">;</span>
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>
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>
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">&</span><span class="normal">argc</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</span><span class="normal">argv</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</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">-></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">&&</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>
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>
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>
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>
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>
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">&</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>
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">-></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>
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>
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>
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">&</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">-></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>
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">&</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>
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">&</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">-></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">"(&s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&</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>
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>
729 <span class="normal"> ret </span><span class="symbol">=</span><span class="normal"> </span><span class="number">0</span><span class="symbol">;</span>
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>
740 <p><br class="example-break">
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>
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.
752 <p class="since">Since 2.26</p>
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<<0),
760 G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS = (1<<1)
764 Flags used when creating a <a class="link" href="GDBusServer.html" title="GDBusServer"><span class="type">GDBusServer</span></a>.
766 <div class="variablelist"><table border="0">
767 <col align="left" valign="top">
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>
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
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.
789 <p class="since">Since 2.26</p>
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>
801 Creates a new D-Bus server that listens on the first address in
802 <em class="parameter"><code>address</code></em> that works.
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.
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.
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>.
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
821 This is a synchronous failable constructor. See
822 <code class="function">g_dbus_server_new()</code> for the asynchronous version.
824 <div class="variablelist"><table border="0">
825 <col align="left" valign="top">
828 <td><p><span class="term"><em class="parameter"><code>address</code></em> :</span></p></td>
829 <td>A D-Bus address.</td>
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>
836 <td><p><span class="term"><em class="parameter"><code>guid</code></em> :</span></p></td>
837 <td>A D-Bus GUID.</td>
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>
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>
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>
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>
859 <p class="since">Since 2.26</p>
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>
866 Starts <em class="parameter"><code>server</code></em>.
868 <div class="variablelist"><table border="0">
869 <col align="left" valign="top">
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>
875 <p class="since">Since 2.26</p>
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>
882 Stops <em class="parameter"><code>server</code></em>.
884 <div class="variablelist"><table border="0">
885 <col align="left" valign="top">
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>
891 <p class="since">Since 2.26</p>
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>
898 Gets whether <em class="parameter"><code>server</code></em> is active.
900 <div class="variablelist"><table border="0">
901 <col align="left" valign="top">
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>
908 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></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>
914 <p class="since">Since 2.26</p>
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>
921 Gets the GUID for <em class="parameter"><code>server</code></em>.
923 <div class="variablelist"><table border="0">
924 <col align="left" valign="top">
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>
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>
936 <p class="since">Since 2.26</p>
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>
943 Gets the flags for <em class="parameter"><code>server</code></em>.
945 <div class="variablelist"><table border="0">
946 <col align="left" valign="top">
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>
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>
958 <p class="since">Since 2.26</p>
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>
965 Gets a D-Bus address string that can be used by clients to connect
966 to <em class="parameter"><code>server</code></em>.
968 <div class="variablelist"><table border="0">
969 <col align="left" valign="top">
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>
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>
982 <p class="since">Since 2.26</p>
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>
991 Whether the server is currently active.
993 <p>Default value: FALSE</p>
994 <p class="since">Since 2.26</p>
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>
1001 The D-Bus address to listen on.
1003 <p>Default value: NULL</p>
1004 <p class="since">Since 2.26</p>
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>
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>.
1013 <p class="since">Since 2.26</p>
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>
1020 The D-Bus address that clients can use.
1022 <p>Default value: NULL</p>
1023 <p class="since">Since 2.26</p>
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>
1030 Flags from the <a class="link" href="GDBusServer.html#GDBusServerFlags" title="enum GDBusServerFlags"><span class="type">GDBusServerFlags</span></a> enumeration.
1032 <p class="since">Since 2.26</p>
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>
1039 The guid of the server.
1041 <p>Default value: NULL</p>
1042 <p class="since">Since 2.26</p>
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>
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.
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.
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.
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.
1077 <div class="variablelist"><table border="0">
1078 <col align="left" valign="top">
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>
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>
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>
1093 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></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
1100 <p class="since">Since 2.26</p>
1104 <div class="footer">
1106 Generated by GTK-Doc V1.18</div>