static void nemo_dbus_manager_init (NemoDBusManager *self) { GDBusConnection *connection; connection = g_application_get_dbus_connection (g_application_get_default ()); self->object_manager = g_dbus_object_manager_server_new ("/org/Nemo"); self->file_operations = nemo_dbus_file_operations_skeleton_new (); g_signal_connect (self->file_operations, "handle-copy-uris", G_CALLBACK (handle_copy_uris), self); g_signal_connect (self->file_operations, "handle-copy-file", G_CALLBACK (handle_copy_file), self); g_signal_connect (self->file_operations, "handle-empty-trash", G_CALLBACK (handle_empty_trash), self); g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (self->file_operations), connection, "/org/Nemo", NULL); g_dbus_object_manager_server_set_connection (self->object_manager, connection); }
static void g_dbus_object_manager_server_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GDBusObjectManagerServer *manager = G_DBUS_OBJECT_MANAGER_SERVER (object); switch (prop_id) { case PROP_CONNECTION: g_dbus_object_manager_server_set_connection (manager, g_value_get_object (value)); break; case PROP_OBJECT_PATH: g_assert (manager->priv->object_path == NULL); g_assert (g_variant_is_object_path (g_value_get_string (value))); manager->priv->object_path = g_value_dup_string (value); manager->priv->object_path_ending_in_slash = g_strdup_printf ("%s/", manager->priv->object_path); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, SubprocessData *sd) { EDBusSubprocessBackend *proxy; EDBusSubprocessObjectSkeleton *object; object = e_dbus_subprocess_object_skeleton_new (path); proxy = e_dbus_subprocess_backend_skeleton_new (); e_dbus_subprocess_object_skeleton_set_backend (object, proxy); g_signal_connect ( proxy, "handle-create", G_CALLBACK (subprocess_backend_handle_create_cb), sd->subprocess_book_factory); g_signal_connect ( proxy, "handle-close", G_CALLBACK (subprocess_backend_handle_close_cb), sd); g_dbus_object_manager_server_export (sd->manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (proxy); g_object_unref (object); g_dbus_object_manager_server_set_connection (sd->manager, connection); }
static void on_bus_acquired (GDBusConnection *connection, const char *name, gpointer user_data) { GDBusObjectManagerServer *manager; ClutterDeviceManager *device_manager; MetaIdleMonitor *monitor; GSList *devices, *iter; char *path; manager = g_dbus_object_manager_server_new ("/org/gnome/Mutter/IdleMonitor"); /* We never clear the core monitor, as that's supposed to cumulate idle times from all devices */ monitor = meta_idle_monitor_get_core (); path = g_strdup ("/org/gnome/Mutter/IdleMonitor/Core"); create_monitor_skeleton (manager, monitor, path); g_free (path); device_manager = clutter_device_manager_get_default (); devices = clutter_device_manager_list_devices (device_manager); for (iter = devices; iter; iter = iter->next) on_device_added (device_manager, iter->data, manager); g_slist_free (devices); g_signal_connect_object (device_manager, "device-added", G_CALLBACK (on_device_added), manager, 0); g_signal_connect_object (device_manager, "device-removed", G_CALLBACK (on_device_removed), manager, 0); g_dbus_object_manager_server_set_connection (manager, connection); }
void hs_dbus_handler_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { HsObjectSkeleton *object; HsPower *power; HsSession *session; manager = g_dbus_object_manager_server_new ("/org/home/hsession/Manager"); object = hs_object_skeleton_new ("/org/home/hsession/Manager/Proxy"); power = hs_power_skeleton_new (); session = hs_session_skeleton_new (); hs_object_skeleton_set_power (object, power); g_object_unref (power); hs_object_skeleton_set_session (object, session); g_object_unref (session); g_signal_connect (session, "handle-logout", G_CALLBACK (_on_session_logout), user_data); g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); g_dbus_object_manager_server_set_connection (manager, connection); }
static gboolean initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { MMManagerPrivate *priv = MM_MANAGER (initable)->priv; /* Create plugin manager */ priv->plugin_manager = mm_plugin_manager_new (error); if (!priv->plugin_manager) return FALSE; /* Export the manager interface */ if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (initable), priv->connection, MM_DBUS_PATH, error)) return FALSE; /* Export the Object Manager interface */ g_dbus_object_manager_server_set_connection (priv->object_manager, priv->connection); /* All good */ return TRUE; }
static void storage_daemon_constructed (GObject *object) { StorageDaemon *self = STORAGE_DAEMON (object); GError *error; G_OBJECT_CLASS (storage_daemon_parent_class)->constructed (object); storage_invocation_initialize (self->connection, on_client_appeared, on_client_disappeared, self); error = NULL; self->authority = polkit_authority_get_sync (NULL, &error); if (self->authority == NULL) { g_warning ("Error initializing polkit authority: %s (%s, %d)", error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } /* Yes, we use the same paths as the main udisks daemon on purpose */ self->object_manager = g_dbus_object_manager_server_new ("/org/freedesktop/UDisks2"); /* Export the ObjectManager */ g_dbus_object_manager_server_set_connection (self->object_manager, self->connection); storage_manager_new_async (on_manager_ready, self); }
static gboolean terminal_app_dbus_register (GApplication *application, GDBusConnection *connection, const gchar *object_path, GError **error) { TerminalApp *app = TERMINAL_APP (application); gs_unref_object TerminalObjectSkeleton *object = NULL; gs_unref_object TerminalFactory *factory = NULL; if (!G_APPLICATION_CLASS (terminal_app_parent_class)->dbus_register (application, connection, object_path, error)) return FALSE; object = terminal_object_skeleton_new (TERMINAL_FACTORY_OBJECT_PATH); factory = terminal_factory_impl_new (); terminal_object_skeleton_set_factory (object, factory); app->object_manager = g_dbus_object_manager_server_new (TERMINAL_OBJECT_PATH_PREFIX); g_dbus_object_manager_server_export (app->object_manager, G_DBUS_OBJECT_SKELETON (object)); /* And export the object */ g_dbus_object_manager_server_set_connection (app->object_manager, connection); return TRUE; }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; //g_print ("Acquired a message bus connection: %s\n",name); cmdline *cmd = user_data; if (cmd->argc < 2) { g_print("No objects created. Put object name(s) on command line\n"); return; } manager = g_dbus_object_manager_server_new (dbus_object_path); int i=0; gchar *s; s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[1]); object = object_skeleton_new (s); g_free (s); Button* button = button_skeleton_new (); object_skeleton_set_button (object, button); g_object_unref (button); //define method callbacks g_signal_connect (button, "handle-is-on", G_CALLBACK (on_is_on), NULL); /* user_data */ g_signal_connect (button, "handle-sim-button-press", G_CALLBACK (on_button_press), NULL); /* user_data */ /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); /* Export all objects */ g_dbus_object_manager_server_set_connection (manager, connection); // get gpio device paths int rc = GPIO_OK; do { rc = gpio_init(connection,&gpio_button); if (rc != GPIO_OK) { break; } rc = gpio_open_interrupt(&gpio_button,on_button_interrupt,object); if (rc != GPIO_OK) { break; } } while(0); if (rc != GPIO_OK) { printf("ERROR PowerButton: GPIO setup (rc=%d)\n",rc); } }
static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) { cmdline *cmd = user_data; if(cmd->argc < 4) { g_print("flasher [flash name] [filename] [source object]\n"); g_main_loop_quit(cmd->loop); return; } printf("Starting flasher: %s,%s,%s,\n",cmd->argv[1],cmd->argv[2],cmd->argv[3]); ObjectSkeleton *object; manager = g_dbus_object_manager_server_new(dbus_object_path); gchar *s; s = g_strdup_printf("%s/%s",dbus_object_path,cmd->argv[1]); object = object_skeleton_new(s); g_free(s); FlashControl* flash_control = flash_control_skeleton_new(); object_skeleton_set_flash_control(object, flash_control); g_object_unref(flash_control); /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export(manager, G_DBUS_OBJECT_SKELETON(object)); g_object_unref(object); /* Export all objects */ g_dbus_object_manager_server_set_connection(manager, connection); bool bmc_flash = false; uint32_t address = 0; if(strcmp(cmd->argv[1],"bmc")==0) { bmc_flash = true; } if(strcmp(cmd->argv[1],"bmc_ramdisk")==0) { bmc_flash = true; address = 0x20300000; } if(strcmp(cmd->argv[1],"bmc_kernel")==0) { bmc_flash = true; address = 0x20080000; } int rc = flash(flash_control,bmc_flash,address,cmd->argv[2],cmd->argv[3]); if(rc) { flash_message(connection,cmd->argv[3],"error","Flash Error"); } else { flash_message(connection,cmd->argv[3],"done",""); } //Object exits when done flashing g_main_loop_quit(cmd->loop); }
static void goa_daemon_init (GoaDaemon *daemon) { static volatile GQuark goa_error_domain = 0; GoaObjectSkeleton *object; gchar *path; /* this will force associating errors in the GOA_ERROR error domain * with org.freedesktop.Goa.Error.* errors via g_dbus_error_register_error_domain(). */ goa_error_domain = GOA_ERROR; goa_error_domain; /* shut up -Wunused-but-set-variable */ notify_init ("goa-daemon"); /* TODO: maybe nicer to pass in a GDBusConnection* construct property */ daemon->connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL); /* Create object manager */ daemon->object_manager = g_dbus_object_manager_server_new ("/org/gnome/OnlineAccounts"); /* Create and export Manager */ daemon->manager = goa_manager_skeleton_new (); g_signal_connect (daemon->manager, "handle-add-account", G_CALLBACK (on_manager_handle_add_account), daemon); object = goa_object_skeleton_new ("/org/gnome/OnlineAccounts/Manager"); goa_object_skeleton_set_manager (object, daemon->manager); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); /* create ~/.config/goa-1.0 directory */ path = g_strdup_printf ("%s/goa-1.0", g_get_user_config_dir ()); if (g_mkdir_with_parents (path, 0755) != 0) { goa_warning ("Error creating directory %s: %m", path); } g_free (path); /* set up file monitoring */ path = g_strdup_printf ("%s/goa-1.0/accounts.conf", g_get_user_config_dir ()); daemon->home_conf_file_monitor = create_monitor (path, FALSE); if (daemon->home_conf_file_monitor != NULL) g_signal_connect (daemon->home_conf_file_monitor, "changed", G_CALLBACK (on_file_monitor_changed), daemon); g_free (path); /* prime the list of accounts */ goa_daemon_reload_configuration (daemon); /* Export objects */ g_dbus_object_manager_server_set_connection (daemon->object_manager, daemon->connection); }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; //g_print ("Acquired a message bus connection: %s\n",name); cmdline *cmd = user_data; if (cmd->argc < 2) { g_print("No objects created. Put object name(s) on command line\n"); return; } manager = g_dbus_object_manager_server_new (dbus_object_path); int i=0; for (i=1;i<cmd->argc;i++) { gchar *s; s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]); object = object_skeleton_new (s); g_free (s); ControlHost* control_host = control_host_skeleton_new (); object_skeleton_set_control_host (object, control_host); g_object_unref (control_host); Control* control = control_skeleton_new (); object_skeleton_set_control (object, control); g_object_unref (control); //define method callbacks here g_signal_connect (control_host, "handle-boot", G_CALLBACK (on_boot), object); /* user_data */ g_signal_connect (control, "handle-init", G_CALLBACK (on_init), NULL); /* user_data */ /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); } /* Export all objects */ g_dbus_object_manager_server_set_connection (manager, connection); gpio_init(connection,&fsi_data); gpio_init(connection,&fsi_clk); gpio_init(connection,&fsi_enable); gpio_init(connection,&cronus_sel); }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { cmdline *cmd = user_data; manager = g_dbus_object_manager_server_new (dbus_object_path); gchar *s; s = g_strdup_printf ("%s/%s",dbus_object_path,instance_name); ObjectSkeleton *object = object_skeleton_new (s); g_free (s); Watchdog *wd = watchdog_skeleton_new (); object_skeleton_set_watchdog (object, wd); g_object_unref (wd); ObjectMapper* mapper = object_mapper_skeleton_new (); object_skeleton_set_object_mapper (object, mapper); g_object_unref (mapper); // set properties watchdog_set_watchdog(wd,1); //define method callbacks here g_signal_connect (wd, "handle-start", G_CALLBACK (on_start), object); /* user_data */ g_signal_connect (wd, "handle-poke", G_CALLBACK (on_poke), object); /* user_data */ g_signal_connect (wd, "handle-stop", G_CALLBACK (on_stop), object); /* user_data */ g_signal_connect (wd, "handle-set", G_CALLBACK (set_poll_interval), object); /* user_data */ /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); /* Export all objects */ g_dbus_object_manager_server_set_connection (manager, connection); emit_object_added((GDBusObjectManager*)manager); }
static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; cmdline *cmd = user_data; manager = g_dbus_object_manager_server_new(dbus_object_path); int i = 0; for(i=0;i<NUM_HWMONS;i++) { if(!is_hwmon_valid(&hwmons[i])) { continue; } gchar *s; s = g_strdup_printf("%s/%s",dbus_object_path,hwmons[i].name); object = object_skeleton_new(s); g_free(s); Hwmon *hwmon = hwmon_skeleton_new(); object_skeleton_set_hwmon(object, hwmon); g_object_unref(hwmon); SensorValue *sensor = sensor_value_skeleton_new(); object_skeleton_set_sensor_value(object, sensor); g_object_unref(sensor); hwmon_set_sysfs_path(hwmon,hwmons[i].filename); hwmon_set_scale(hwmon,hwmons[i].scale); sensor_value_set_units(sensor,hwmons[i].units); //define method callbacks here g_signal_connect(sensor, "handle-set-value", G_CALLBACK(on_set_value), object); /* user_data */ if(hwmons[i].poll_interval > 0) { g_timeout_add(hwmons[i].poll_interval, poll_hwmon, object); } /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_set_connection(manager, connection); g_dbus_object_manager_server_export(manager, G_DBUS_OBJECT_SKELETON(object)); g_object_unref(object); } }
static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; //g_print ("Acquired a message bus connection: %s\n",name); manager = g_dbus_object_manager_server_new(dbus_object_path); gchar *s; s = g_strdup_printf("%s/%s",dbus_object_path,instance_name); object = object_skeleton_new(s); g_free(s); ControlHost* control_host = control_host_skeleton_new(); object_skeleton_set_control_host(object, control_host); g_object_unref(control_host); Control* control = control_skeleton_new(); object_skeleton_set_control(object, control); g_object_unref(control); //define method callbacks here g_signal_connect(control_host, "handle-boot", G_CALLBACK(on_boot), object); /* user_data */ g_signal_connect(control, "handle-init", G_CALLBACK(on_init), NULL); /* user_data */ control_host_set_debug_mode(control_host,0); control_host_set_flash_side(control_host,"primary"); /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_set_connection(manager, connection); g_dbus_object_manager_server_export(manager, G_DBUS_OBJECT_SKELETON(object)); g_object_unref(object); gpio_init(connection,&fsi_data); gpio_init(connection,&fsi_clk); gpio_init(connection,&fsi_enable); gpio_init(connection,&cronus_sel); gpio_init(connection,&Throttle); gpio_init(connection,&idbtn); }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; cmdline *cmd = user_data; manager = g_dbus_object_manager_server_new (dbus_object_path); gchar *s; s = g_strdup_printf ("%s/%s",dbus_object_path,instance_name); object = object_skeleton_new (s); g_free (s); ControlBmc* control_bmc = control_bmc_skeleton_new (); object_skeleton_set_control_bmc (object, control_bmc); g_object_unref (control_bmc); Control* control = control_skeleton_new (); object_skeleton_set_control (object, control); g_object_unref (control); //define method callbacks here g_signal_connect (control, "handle-init", G_CALLBACK (on_init), NULL); /* user_data */ g_signal_connect (control_bmc, "handle-warm-reset", G_CALLBACK (on_warm_reset), NULL); /* user_data */ /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); /* Export all objects */ g_dbus_object_manager_server_set_connection (manager, connection); //TODO: This is a bad hack to wait for object to be on bus //sleep(1); cmd->user_data = object; //g_idle_add(go,cmd); }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { //g_print ("Acquired a message bus connection: %s\n",name); cmdline *cmd = user_data; if (cmd->argc < 2) { g_print("No objects created. Put object name(s) on command line\n"); return; } manager = g_dbus_object_manager_server_new (dbus_object_path); int i=0; for (i=1;i<cmd->argc;i++) { gchar *s; s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]); ObjectSkeleton *object = object_skeleton_new (s); g_free (s); Fan *fan = fan_skeleton_new (); object_skeleton_set_fan (object, fan); g_object_unref (fan); //define method callbacks here g_signal_connect (fan, "handle-get-speed", G_CALLBACK (on_get_speed), NULL); /* user_data */ g_signal_connect (fan, "handle-set-speed", G_CALLBACK (on_set_speed), NULL); /* user_data */ //g_timeout_add(poll_interval, poll_sensor, object); /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); } /* Export all objects */ g_dbus_object_manager_server_set_connection (manager, connection); }
static void set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { MMBaseManagerPrivate *priv = MM_BASE_MANAGER (object)->priv; switch (prop_id) { case PROP_CONNECTION: { gboolean had_connection = FALSE; if (priv->connection) { had_connection = TRUE; g_object_unref (priv->connection); } priv->connection = g_value_dup_object (value); /* Propagate connection loss to subobjects */ if (had_connection && !priv->connection) { if (priv->object_manager) { mm_dbg ("Stopping connection in object manager server"); g_dbus_object_manager_server_set_connection (priv->object_manager, NULL); } if (priv->test_skeleton && g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (priv->test_skeleton))) { mm_dbg ("Stopping connection in test skeleton"); g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (priv->test_skeleton)); } } break; } case PROP_AUTO_SCAN: priv->auto_scan = g_value_get_boolean (value); break; case PROP_ENABLE_TEST: priv->enable_test = g_value_get_boolean (value); break; case PROP_PLUGIN_DIR: g_free (priv->plugin_dir); priv->plugin_dir = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
/* ** DBus event: Manager bus acquired ** - Export manager interface ** - Bind manager interface methods ** - Create manager service file */ static void on_bus_acquired(GDBusConnection *conn, const gchar *name, gpointer user_data) { WarfacebotMngr *wbm = NULL; WarfacebotMngrIface *iface = NULL; GError *error = NULL; gboolean ret = FALSE; g_print ("Manager acquired message bus %s\n", name); create_service_file(API_MNGR_NAME, NULL, NULL); /* Create Manager */ connection = conn; manager = g_dbus_object_manager_server_new(API_MNGR_PATH); g_dbus_object_manager_server_set_connection(manager, connection); /* Create Custom Interface */ wbm = warfacebot_mngr_skeleton_new(); iface = WARFACEBOT_MNGR_GET_IFACE (wbm); iface->handle_create = on_handle_create; iface->handle_quit = on_handle_quit; iface->handle_instance_exit = on_handle_instance_exit; iface->handle_instance_ready = on_handle_instance_ready; ret = g_dbus_interface_skeleton_export( G_DBUS_INTERFACE_SKELETON (wbm), connection, API_MNGR_PATH, &error); if (ret == FALSE) { g_warning(error->message); return; } g_print("Manager interface exported\n"); }
static gboolean initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { MMBaseManagerPrivate *priv = MM_BASE_MANAGER (initable)->priv; /* If autoscan enabled, list for udev events */ if (priv->auto_scan) g_signal_connect (priv->udev, "uevent", G_CALLBACK (handle_uevent), initable); /* Create plugin manager */ priv->plugin_manager = mm_plugin_manager_new (priv->plugin_dir, error); if (!priv->plugin_manager) return FALSE; /* Export the manager interface */ if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (initable), priv->connection, MM_DBUS_PATH, error)) return FALSE; /* Export the Object Manager interface */ g_dbus_object_manager_server_set_connection (priv->object_manager, priv->connection); /* Setup the Test skeleton and export the interface */ if (priv->enable_test) { priv->test_skeleton = mm_gdbus_test_skeleton_new (); g_signal_connect (priv->test_skeleton, "handle-set-profile", G_CALLBACK (handle_set_profile), initable); if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (priv->test_skeleton), priv->connection, MM_DBUS_PATH, error)) return FALSE; } /* All good */ return TRUE; }
static gboolean terminal_app_dbus_register (GApplication *application, GDBusConnection *connection, const gchar *object_path, GError **error) { TerminalApp *app = TERMINAL_APP (application); gs_unref_object TerminalObjectSkeleton *object = NULL; gs_unref_object TerminalFactory *factory = NULL; if (!G_APPLICATION_CLASS (terminal_app_parent_class)->dbus_register (application, connection, object_path, error)) return FALSE; #ifdef ENABLE_SEARCH_PROVIDER if (g_settings_get_boolean (app->global_settings, TERMINAL_SETTING_SHELL_INTEGRATION_KEY)) { gs_unref_object TerminalSearchProvider *search_provider; search_provider = terminal_search_provider_new (); if (!terminal_search_provider_dbus_register (search_provider, connection, TERMINAL_SEARCH_PROVIDER_PATH, error)) return FALSE; gs_transfer_out_value (&app->search_provider, &search_provider); } #endif /* ENABLE_SEARCH_PROVIDER */ object = terminal_object_skeleton_new (TERMINAL_FACTORY_OBJECT_PATH); factory = terminal_factory_impl_new (); terminal_object_skeleton_set_factory (object, factory); app->object_manager = g_dbus_object_manager_server_new (TERMINAL_OBJECT_PATH_PREFIX); g_dbus_object_manager_server_export (app->object_manager, G_DBUS_OBJECT_SKELETON (object)); /* And export the object */ g_dbus_object_manager_server_set_connection (app->object_manager, connection); return TRUE; }
/** * on_bus_acquired: */ static void on_bus_acquired (GDBusConnection *connection, const gchar *name, LiHelperDaemon *helper) { LiProxyObjectSkeleton *object; LiProxyManager *mgr_bus; GError *error = NULL; g_print ("Acquired a message bus connection\n"); helper->authority = polkit_authority_get_sync (NULL, &error); g_assert_no_error (error); /* TODO: Meh... Needs smart error handling. */ helper->obj_manager = g_dbus_object_manager_server_new ("/org/freedesktop/Limba"); /* create the Manager object */ object = li_proxy_object_skeleton_new ("/org/freedesktop/Limba/Manager"); mgr_bus = li_proxy_manager_skeleton_new (); li_proxy_object_skeleton_set_manager (object, mgr_bus); g_object_unref (mgr_bus); g_signal_connect (mgr_bus, "handle-remove-software", G_CALLBACK (bus_manager_remove_software_cb), helper); g_signal_connect (mgr_bus, "handle-install-local", G_CALLBACK (bus_installer_install_local_cb), helper); g_signal_connect (mgr_bus, "handle-install", G_CALLBACK (bus_installer_install_cb), helper); /* export the object */ g_dbus_object_manager_server_export (helper->obj_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); g_dbus_object_manager_server_set_connection (helper->obj_manager, connection); }
/***************************************************************************** * neardal_agent_acquire_dbus_name: acquire dbus name for management of neard * agent feature ****************************************************************************/ errorCode_t neardal_agent_acquire_dbus_name(void) { errorCode_t err = NEARDAL_SUCCESS; NEARDAL_TRACEIN(); if (neardalMgr.conn == NULL) return NEARDAL_ERROR_DBUS; neardalMgr.OwnerId = g_bus_own_name_on_connection(neardalMgr.conn , NEARDAL_DBUS_WELLKNOWN_NAME , G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | G_BUS_NAME_OWNER_FLAGS_REPLACE , on_name_acquired /* on_name_acquired */ , on_name_lost /* on_name_lost */ , NULL /* user data */ , NULL); /* freeing user_data func */ if (neardalMgr.OwnerId == 0) { err = NEARDAL_ERROR_DBUS; goto exit; } /* Create a new org.neardal.ObjectManager rooted at /neardal */ neardalMgr.agentMgr = g_dbus_object_manager_server_new(AGENT_PREFIX); if (neardalMgr.agentMgr == NULL) { err = NEARDAL_ERROR_DBUS; goto exit; } /* Export all objects */ g_dbus_object_manager_server_set_connection (neardalMgr.agentMgr , neardalMgr.conn); exit: if (err != NEARDAL_SUCCESS) NEARDAL_TRACE_ERR("(%d:%s)\n", err , neardal_error_get_text(err)); return err; }
static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer object) { int rc = GPIO_OK; manager = g_dbus_object_manager_server_new(dbus_object_path); ControlCheckstop* control_checkstop = control_checkstop_skeleton_new(); object_skeleton_set_control_checkstop(object, control_checkstop); g_object_unref(control_checkstop); g_dbus_object_manager_server_set_connection(manager, connection); rc = gpio_init(connection, &checkstop); if (rc == GPIO_OK) { rc = gpio_open_interrupt(&checkstop, on_checkstop_interrupt, connection); } if (rc != GPIO_OK) { printf("ERROR Checkstop: GPIO setup (rc=%d)\n", rc); } }
static void bus_acquired_cb (GDBusConnection *conn, const gchar *name, gpointer user_data) { NautilusFreedesktopDBus *fdb = user_data; DEBUG ("Bus acquired at %s", name); fdb->object_manager = g_dbus_object_manager_server_new (NAUTILUS_FDO_DBUS_PATH); fdb->skeleton = nautilus_freedesktop_file_manager1_skeleton_new (); g_signal_connect (fdb->skeleton, "handle-show-items", G_CALLBACK (skeleton_handle_show_items_cb), fdb); g_signal_connect (fdb->skeleton, "handle-show-folders", G_CALLBACK (skeleton_handle_show_folders_cb), fdb); g_signal_connect (fdb->skeleton, "handle-show-item-properties", G_CALLBACK (skeleton_handle_show_item_properties_cb), fdb); g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (fdb->skeleton), conn, NAUTILUS_FDO_DBUS_PATH, NULL); g_dbus_object_manager_server_set_connection (fdb->object_manager, conn); }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { //g_print ("Acquired a message bus connection: %s\n",name); cmdline *cmd = user_data; if (cmd->argc < 2) { g_print("No objects created. Put object name(s) on command line\n"); return; } manager = g_dbus_object_manager_server_new (dbus_object_path); int i=0; for (i=1;i<cmd->argc;i++) { gchar *s; s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]); ObjectSkeleton *object = object_skeleton_new (s); g_free (s); Occ *occ = occ_skeleton_new (); object_skeleton_set_occ (object, occ); g_object_unref (occ); occ_set_instance_name(occ,cmd->argv[i]); SensorI2c *i2c = sensor_i2c_skeleton_new (); object_skeleton_set_sensor_i2c (object, i2c); g_object_unref (i2c); g_signal_connect (occ, "handle-init", G_CALLBACK (on_init), object); /* user_data */ //g_timeout_add(3000, poll_occ, object); /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); int c; for (c=0;c<12;c++) { s = g_strdup_printf ("%s/Temperature/P8_%s_Core_%d",dbus_object_path,cmd->argv[i],c); ObjectSkeleton *object = object_skeleton_new (s); g_free (s); SensorValue *sensor = sensor_value_skeleton_new (); object_skeleton_set_sensor_value (object, sensor); g_object_unref (sensor); GVariant* v_new_value = NEW_VARIANT_U(c); sensor_value_set_value(sensor,v_new_value); sensor_value_set_units(sensor,"C"); g_signal_connect (sensor, "handle-init", G_CALLBACK (on_init_sensor), NULL); /* user_data */ //emit changed signal so sensor manager sees initial value sensor_value_emit_changed(sensor,sensor_value_get_value(sensor),sensor_value_get_units(sensor)); /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (object); } } /* Export all objects */ g_dbus_object_manager_server_set_connection (manager, connection); }
static void daemon_constructed (GObject *_object) { Daemon *daemon = DAEMON (_object); CockpitResourceMonitor *monitor; CockpitMultiResourceMonitor *multi_monitor; CockpitStorageManager *storage_manager; CockpitObjectSkeleton *object = NULL; g_assert (_daemon_instance == NULL); _daemon_instance = daemon; g_debug ("creating bus proxy"); daemon->system_bus_proxy = g_dbus_proxy_new_sync (daemon->connection, G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, NULL, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", NULL, NULL); g_assert (daemon->system_bus_proxy != NULL); g_debug ("creating object manager"); daemon->object_manager = g_dbus_object_manager_server_new ("/com/redhat/Cockpit"); /* /com/redhat/Cockpit/NetworkMonitor */ monitor = network_monitor_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/NetworkMonitor"); cockpit_object_skeleton_set_resource_monitor (object, monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (monitor); g_object_unref (object); g_debug ("exported network monitor"); /* /com/redhat/Cockpit/DiskIOMonitor */ monitor = disk_io_monitor_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/DiskIOMonitor"); cockpit_object_skeleton_set_resource_monitor (object, monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (monitor); g_object_unref (object); g_debug ("exported disk io monitor"); /* /com/redhat/Cockpit/LxcMonitor */ multi_monitor = cgroup_monitor_new (G_OBJECT (daemon)); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/LxcMonitor"); cockpit_object_skeleton_set_multi_resource_monitor (object, multi_monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (multi_monitor); g_object_unref (object); g_debug ("exported lxc monitor"); /* /com/redhat/Cockpit/NetdevMonitor */ multi_monitor = netdev_monitor_new (G_OBJECT (daemon)); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/NetdevMonitor"); cockpit_object_skeleton_set_multi_resource_monitor (object, multi_monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (multi_monitor); g_object_unref (object); g_debug ("exported net dev monitor"); /* /com/redhat/Cockpit/BlockdevMonitor */ multi_monitor = blockdev_monitor_new (G_OBJECT (daemon)); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/BlockdevMonitor"); cockpit_object_skeleton_set_multi_resource_monitor (object, multi_monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (multi_monitor); g_object_unref (object); g_debug ("exported block dev monitor"); /* /com/redhat/Cockpit/MountMonitor */ multi_monitor = mount_monitor_new (G_OBJECT (daemon)); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/MountMonitor"); cockpit_object_skeleton_set_multi_resource_monitor (object, multi_monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (multi_monitor); g_object_unref (object); g_debug ("exported mount monitor"); /* /com/redhat/Cockpit/Storage/Manager */ storage_manager = storage_manager_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/Storage/Manager"); cockpit_object_skeleton_set_storage_manager (object, storage_manager); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (storage_manager); g_object_unref (object); g_debug ("exported storage manager"); daemon->storage_provider = storage_provider_new (daemon); /* Export the ObjectManager */ g_dbus_object_manager_server_set_connection (daemon->object_manager, daemon->connection); daemon->tick_timeout_id = g_timeout_add_seconds (1, on_timeout, daemon); g_debug ("daemon constructed"); if (G_OBJECT_CLASS (daemon_parent_class)->constructed != NULL) G_OBJECT_CLASS (daemon_parent_class)->constructed (_object); }
static void daemon_constructed (GObject *_object) { Daemon *daemon = DAEMON (_object); CockpitManager *manager; CockpitMachines *machines; CockpitResourceMonitor *monitor; CockpitMultiResourceMonitor *multi_monitor; CockpitRealms *realms; CockpitServices *services; CockpitJournal *journal; CockpitAccounts *accounts; CockpitStorageManager *storage_manager; CockpitObjectSkeleton *object = NULL; g_assert (_daemon_instance == NULL); _daemon_instance = daemon; daemon->system_bus_proxy = g_dbus_proxy_new_sync (daemon->connection, G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, NULL, "org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", NULL, NULL); g_assert (daemon->system_bus_proxy != NULL); daemon->object_manager = g_dbus_object_manager_server_new ("/com/redhat/Cockpit"); /* /com/redhat/Cockpit/Machines */ machines = machines_new (daemon_get_object_manager (daemon)); daemon->machines = MACHINES (machines); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/Machines"); cockpit_object_skeleton_set_machines (object, machines); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (machines); g_object_unref (object); /* /com/redhat/Cockpit/Manager */ manager = manager_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/Manager"); cockpit_object_skeleton_set_manager (object, manager); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (manager); g_object_unref (object); /* /com/redhat/Cockpit/CpuMonitor */ monitor = cpu_monitor_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/CpuMonitor"); cockpit_object_skeleton_set_resource_monitor (object, monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (monitor); g_object_unref (object); /* /com/redhat/Cockpit/MemoryMonitor */ monitor = memory_monitor_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/MemoryMonitor"); cockpit_object_skeleton_set_resource_monitor (object, monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (monitor); g_object_unref (object); /* /com/redhat/Cockpit/NetworkMonitor */ monitor = network_monitor_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/NetworkMonitor"); cockpit_object_skeleton_set_resource_monitor (object, monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (monitor); g_object_unref (object); /* /com/redhat/Cockpit/DiskIOMonitor */ monitor = disk_io_monitor_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/DiskIOMonitor"); cockpit_object_skeleton_set_resource_monitor (object, monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (monitor); g_object_unref (object); /* /com/redhat/Cockpit/LxcMonitor */ multi_monitor = cgroup_monitor_new (G_OBJECT (daemon)); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/LxcMonitor"); cockpit_object_skeleton_set_multi_resource_monitor (object, multi_monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (multi_monitor); g_object_unref (object); /* /com/redhat/Cockpit/NetdevMonitor */ multi_monitor = netdev_monitor_new (G_OBJECT (daemon)); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/NetdevMonitor"); cockpit_object_skeleton_set_multi_resource_monitor (object, multi_monitor); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (multi_monitor); g_object_unref (object); /* /com/redhat/Cockpit/Realms */ realms = realms_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/Realms"); cockpit_object_skeleton_set_realms (object, realms); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (realms); g_object_unref (object); /* /com/redhat/Cockpit/Services */ services = services_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/Services"); cockpit_object_skeleton_set_services (object, services); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (services); g_object_unref (object); /* /com/redhat/Cockpit/Journal */ journal = journal_new (); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/Journal"); cockpit_object_skeleton_set_journal (object, journal); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (journal); /* /com/redhat/Cockpit/Accounts */ accounts = accounts_new (); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/Accounts"); cockpit_object_skeleton_set_accounts (object, accounts); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (accounts); g_object_unref (object); /* /com/redhat/Cockpit/Storage/Manager */ storage_manager = storage_manager_new (daemon); object = cockpit_object_skeleton_new ("/com/redhat/Cockpit/Storage/Manager"); cockpit_object_skeleton_set_storage_manager (object, storage_manager); g_dbus_object_manager_server_export (daemon->object_manager, G_DBUS_OBJECT_SKELETON (object)); g_object_unref (storage_manager); g_object_unref (object); daemon->storage_provider = storage_provider_new (daemon); /* Export the ObjectManager */ g_dbus_object_manager_server_set_connection (daemon->object_manager, daemon->connection); daemon->tick_timeout_id = g_timeout_add_seconds (1, on_timeout, daemon); if (G_OBJECT_CLASS (daemon_parent_class)->constructed != NULL) G_OBJECT_CLASS (daemon_parent_class)->constructed (_object); }
static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; cmdline *cmd = user_data; manager = g_dbus_object_manager_server_new(dbus_object_path); int i=0; //TODO: don't use fixed buffer char flasher_path[512]; memset(flasher_path, '\0', sizeof(flasher_path)); gchar *flasher_file = NULL; int c = strlen(cmd->argv[0]); while(c>0) { if(cmd->argv[0][c] == '/') { strncpy(flasher_path,cmd->argv[0],c); flasher_file = g_strdup_printf("%s/%s",flasher_path,FLASHER_BIN); break; } c--; } const char* inst[] = {"bios"}; for(i=0;i<1;i++) { gchar* s; s = g_strdup_printf("%s/%s",dbus_object_path,inst[i]); object = object_skeleton_new(s); g_free(s); Flash* flash = flash_skeleton_new(); object_skeleton_set_flash(object, flash); g_object_unref(flash); SharedResource* lock = shared_resource_skeleton_new(); object_skeleton_set_shared_resource(object, lock); g_object_unref(lock); shared_resource_set_lock(lock,false); shared_resource_set_name(lock,""); flash_set_flasher_path(flash,flasher_file); flash_set_flasher_name(flash,FLASHER_BIN); flash_set_flasher_instance(flash,inst[i]); //g_free (s); //define method callbacks here g_signal_connect(lock, "handle-lock", G_CALLBACK(on_lock), NULL); /* user_data */ g_signal_connect(lock, "handle-unlock", G_CALLBACK(on_unlock), NULL); /* user_data */ g_signal_connect(lock, "handle-is-locked", G_CALLBACK(on_is_locked), NULL); /* user_data */ g_signal_connect(flash, "handle-update", G_CALLBACK(on_update), object); /* user_data */ g_signal_connect(flash, "handle-error", G_CALLBACK(on_error), object); /* user_data */ g_signal_connect(flash, "handle-done", G_CALLBACK(on_done), object); /* user_data */ g_signal_connect(flash, "handle-update-via-tftp", G_CALLBACK(on_update_via_tftp), object); /* user_data */ g_signal_connect(flash, "handle-init", G_CALLBACK(on_init), object); /* user_data */ s = g_strdup_printf("/org/openbmc/control/%s",inst[i]); g_dbus_connection_signal_subscribe(connection, NULL, "org.openbmc.FlashControl", "Progress", s, NULL, G_DBUS_SIGNAL_FLAGS_NONE, (GDBusSignalCallback) on_flash_progress, object, NULL ); g_free(s); flash_set_filename(flash,""); /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_set_connection(manager, connection); g_dbus_object_manager_server_export(manager, G_DBUS_OBJECT_SKELETON(object)); g_object_unref(object); } g_free(flasher_file); }
static void on_bus_acquired(GDBusConnection *connection, const gchar *name, gpointer user_data) { ObjectSkeleton *object; cmdline *cmd = user_data; if(cmd->argc < 3) { g_print("Usage: power_control.exe [poll interval] [timeout]\n"); return; } manager = g_dbus_object_manager_server_new(dbus_object_path); gchar *s; s = g_strdup_printf("%s/%s",dbus_object_path,instance_name); object = object_skeleton_new(s); g_free(s); ControlPower* control_power = control_power_skeleton_new(); object_skeleton_set_control_power(object, control_power); g_object_unref(control_power); Control* control = control_skeleton_new(); object_skeleton_set_control(object, control); g_object_unref(control); //define method callbacks here g_signal_connect(control_power, "handle-set-power-state", G_CALLBACK(on_set_power_state), object); /* user_data */ g_signal_connect(control_power, "handle-get-power-state", G_CALLBACK(on_get_power_state), NULL); /* user_data */ g_signal_connect(control, "handle-init", G_CALLBACK(on_init), object); /* user_data */ /* Export the object (@manager takes its own reference to @object) */ g_dbus_object_manager_server_set_connection(manager, connection); g_dbus_object_manager_server_export(manager, G_DBUS_OBJECT_SKELETON(object)); g_object_unref(object); // get gpio device paths int rc = GPIO_OK; do { rc = gpio_init(connection,&power_pin); if(rc != GPIO_OK) { break; } rc = gpio_init(connection,&pgood); if(rc != GPIO_OK) { break; } rc = gpio_init(connection,&pcie_reset); if(rc != GPIO_OK) { break; } rc = gpio_init(connection,&usb_reset); if(rc != GPIO_OK) { break; } uint8_t gpio; rc = gpio_open(&pgood); if(rc != GPIO_OK) { break; } rc = gpio_read(&pgood,&gpio); if(rc != GPIO_OK) { break; } gpio_close(&pgood); control_power_set_pgood(control_power,gpio); control_power_set_state(control_power,gpio); printf("Pgood state: %d\n",gpio); } while(0); if(rc != GPIO_OK) { printf("ERROR PowerControl: GPIO setup (rc=%d)\n",rc); } //start poll pgood_timeout_start = 0; int poll_interval = atoi(cmd->argv[1]); int pgood_timeout = atoi(cmd->argv[2]); if(poll_interval < 1000 || pgood_timeout <5) { printf("ERROR PowerControl: poll_interval < 1000 or pgood_timeout < 5\n"); } else { control_set_poll_interval(control,poll_interval); control_power_set_pgood_timeout(control_power,pgood_timeout); g_timeout_add(poll_interval, poll_pgood, object); } }