1#include <gio/gio.h>
2
3static void
4on_bus_acquired (GDBusConnection *connection,
5 const gchar *name,
6 gpointer user_data)
7{
8 /* This is where we'd export some objects on the bus */
9}
10
11static void
12on_name_acquired (GDBusConnection *connection,
13 const gchar *name,
14 gpointer user_data)
15{
16 g_print (format: "Acquired the name %s on the session bus\n", name);
17}
18
19static void
20on_name_lost (GDBusConnection *connection,
21 const gchar *name,
22 gpointer user_data)
23{
24 g_print (format: "Lost the name %s on the session bus\n", name);
25}
26
27int
28main (int argc, char *argv[])
29{
30 guint owner_id;
31 GMainLoop *loop;
32 GBusNameOwnerFlags flags;
33 gboolean opt_replace;
34 gboolean opt_allow_replacement;
35 gchar *opt_name;
36 GOptionContext *opt_context;
37 GError *error;
38 GOptionEntry opt_entries[] =
39 {
40 { "replace", 'r', 0, G_OPTION_ARG_NONE, &opt_replace, "Replace existing name if possible", NULL },
41 { "allow-replacement", 'a', 0, G_OPTION_ARG_NONE, &opt_allow_replacement, "Allow replacement", NULL },
42 { "name", 'n', 0, G_OPTION_ARG_STRING, &opt_name, "Name to acquire", NULL },
43 { NULL}
44 };
45
46 error = NULL;
47 opt_name = NULL;
48 opt_replace = FALSE;
49 opt_allow_replacement = FALSE;
50 opt_context = g_option_context_new (parameter_string: "g_bus_own_name() example");
51 g_option_context_add_main_entries (context: opt_context, entries: opt_entries, NULL);
52 if (!g_option_context_parse (context: opt_context, argc: &argc, argv: &argv, error: &error))
53 {
54 g_printerr (format: "Error parsing options: %s", error->message);
55 return 1;
56 }
57 if (opt_name == NULL)
58 {
59 g_printerr (format: "Incorrect usage, try --help.\n");
60 return 1;
61 }
62
63 flags = G_BUS_NAME_OWNER_FLAGS_NONE;
64 if (opt_replace)
65 flags |= G_BUS_NAME_OWNER_FLAGS_REPLACE;
66 if (opt_allow_replacement)
67 flags |= G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT;
68
69 owner_id = g_bus_own_name (bus_type: G_BUS_TYPE_SESSION,
70 name: opt_name,
71 flags,
72 bus_acquired_handler: on_bus_acquired,
73 name_acquired_handler: on_name_acquired,
74 name_lost_handler: on_name_lost,
75 NULL,
76 NULL);
77
78 loop = g_main_loop_new (NULL, FALSE);
79 g_main_loop_run (loop);
80
81 g_bus_unown_name (owner_id);
82
83 return 0;
84}
85

source code of gtk/subprojects/glib/gio/tests/gdbus-example-own-name.c