static void ide_worker_manager_constructed (GObject *object) { IdeWorkerManager *self = (IdeWorkerManager *)object; g_autofree gchar *guid = NULL; g_autofree gchar *address = NULL; GError *error = NULL; g_assert (IDE_IS_WORKER_MANAGER (self)); G_OBJECT_CLASS (ide_worker_manager_parent_class)->constructed (object); if (g_unix_socket_address_abstract_names_supported ()) { address = g_strdup_printf ("unix:abstract=/tmp/gnome-builder-%u", (int)getpid ()); } else { g_autofree gchar *tmpdir = NULL; tmpdir = g_dir_make_tmp ("gnome-builder-worker-XXXXXX", NULL); if (tmpdir == NULL) { g_error ("Failed to determine temporary directory for DBus."); exit (EXIT_FAILURE); } address = g_strdup_printf ("unix:tmpdir=%s", tmpdir); } guid = g_dbus_generate_guid (); self->dbus_server = g_dbus_server_new_sync (address, G_DBUS_SERVER_FLAGS_NONE, guid, NULL, NULL, &error); if (error != NULL) { g_error ("%s", error->message); exit (EXIT_FAILURE); } g_signal_connect_object (self->dbus_server, "new-connection", G_CALLBACK (ide_worker_manager_new_connection_cb), self, G_CONNECT_SWAPPED); IDE_TRACE_MSG ("GDBusServer listening at %s", address); g_dbus_server_start (self->dbus_server); g_assert (g_dbus_server_is_active (self->dbus_server)); }
/** * @brief Destroying the GstSwitchController. * @memberof GstSwitchController * @see GObject */ static void gst_switch_controller_finalize (GstSwitchController * controller) { INFO ("gst_switch_controller finalized"); if (controller->bus_server) { g_dbus_server_stop (controller->bus_server); g_assert (!g_dbus_server_is_active (controller->bus_server)); g_object_unref (controller->bus_server); controller->bus_server = NULL; } g_mutex_clear (&controller->clients_lock); if (G_OBJECT_CLASS (gst_switch_controller_parent_class)->finalize) (*G_OBJECT_CLASS (gst_switch_controller_parent_class)->finalize) (G_OBJECT (controller)); }
gboolean _gumd_dbus_server_p2p_stop ( GumdDbusServer *self) { g_return_val_if_fail (GUMD_IS_DBUS_SERVER_P2P (self), FALSE); DBG("Stop P2P DBus Server"); GumdDbusServerP2P *server = GUMD_DBUS_SERVER_P2P (self); if (server->priv->bus_server) { if (g_dbus_server_is_active (server->priv->bus_server)) g_dbus_server_stop (server->priv->bus_server); g_object_unref (server->priv->bus_server); server->priv->bus_server = NULL; } return TRUE; }
gboolean _gumd_dbus_server_p2p_start ( GumdDbusServer *self) { g_return_val_if_fail (GUMD_IS_DBUS_SERVER_P2P (self), FALSE); DBG("Start P2P DBus Server"); GumdDbusServerP2P *server = GUMD_DBUS_SERVER_P2P (self); if (!server->priv->bus_server) { GError *err = NULL; gchar *guid = g_dbus_generate_guid (); server->priv->bus_server = g_dbus_server_new_sync ( server->priv->address, G_DBUS_SERVER_FLAGS_NONE, guid, NULL, NULL, &err); g_free (guid); if (!server->priv->bus_server) { WARN ("Failed to start server at address '%s':%s", server->priv->address, err ? err->message : "NULL"); g_error_free (err); return FALSE; } g_signal_connect (server->priv->bus_server, "new-connection", G_CALLBACK(_on_client_request), server); } if (!g_dbus_server_is_active (server->priv->bus_server)) { const gchar *path = NULL; g_dbus_server_start (server->priv->bus_server); path = g_strstr_len(server->priv->address, -1, "unix:path=") + 10; if (path) { if (g_chmod (path, S_IRUSR | S_IWUSR) < 0) { WARN("Setting server socket permission failed with error '%s'", strerror(errno)); } } } DBG("Dbus server started at : %s", server->priv->address); return TRUE; }