11 /* see gdbus-example-server.c for the server implementation */
13 get_server_stdout (GDBusConnection *connection,
14 const gchar *name_owner,
17 GDBusMessage *method_call_message;
18 GDBusMessage *method_reply_message;
23 method_call_message = NULL;
24 method_reply_message = NULL;
26 method_call_message = g_dbus_message_new_method_call (name_owner,
27 "/org/gtk/GDBus/TestObject",
28 "org.gtk.GDBus.TestInterface",
30 method_reply_message = g_dbus_connection_send_message_with_reply_sync (connection,
33 NULL, /* out_serial */
34 NULL, /* cancellable */
36 if (method_reply_message == NULL)
39 if (g_dbus_message_get_message_type (method_reply_message) == G_DBUS_MESSAGE_TYPE_ERROR)
41 g_dbus_message_to_gerror (method_reply_message, error);
45 fd_list = g_dbus_message_get_unix_fd_list (method_reply_message);
46 fd = g_unix_fd_list_get (fd_list, 0, error);
49 g_object_unref (method_call_message);
50 g_object_unref (method_reply_message);
56 on_name_appeared (GDBusConnection *connection,
58 const gchar *name_owner,
65 fd = get_server_stdout (connection, name_owner, &error);
68 g_printerr ("Error invoking GimmeStdout(): %s\n",
86 str = g_strdup_printf ("On %s, gdbus-example-unix-fd-client with pid %d was here!\n",
90 g_warn_if_fail (write (fd, str, len) == len);
93 g_print ("Wrote the following on server's stdout:\n%s", str);
101 on_name_vanished (GDBusConnection *connection,
105 g_printerr ("Failed to get name owner for %s\n"
106 "Is ./gdbus-example-server running?\n",
112 main (int argc, char *argv[])
119 watcher_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
120 "org.gtk.GDBus.TestServer",
121 G_BUS_NAME_WATCHER_FLAGS_NONE,
127 loop = g_main_loop_new (NULL, FALSE);
128 g_main_loop_run (loop);
130 g_bus_unwatch_name (watcher_id);