1 #include <gio/gio.h> 2 3 static void 4 on_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 11 static void 12 on_name_acquired (GDBusConnection *connection, 13 const gchar *name, 14 gpointer user_data) 15 { 16 g_print ("Acquired the name %s on the session bus\n", name); 17 } 18 19 static void 20 on_name_lost (GDBusConnection *connection, 21 const gchar *name, 22 gpointer user_data) 23 { 24 g_print ("Lost the name %s on the session bus\n", name); 25 } 26 27 int 28 main (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 G_OPTION_ENTRY_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 ("g_bus_own_name() example"); 51 g_option_context_add_main_entries (opt_context, opt_entries, NULL); 52 if (!g_option_context_parse (opt_context, &argc, &argv, &error)) 53 { 54 g_printerr ("Error parsing options: %s", error->message); 55 return 1; 56 } 57 if (opt_name == NULL) 58 { 59 g_printerr ("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 (G_BUS_TYPE_SESSION, 70 opt_name, 71 flags, 72 on_bus_acquired, 73 on_name_acquired, 74 on_name_lost, 75 NULL, 76 NULL); exp2f(mut x: f32) -> f3277 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