void storage_invocation_initialize (GDBusConnection *connection, StorageClientFunc client_appeared, StorageClientFunc client_disappeared, gpointer user_data) { GObjectClass *object_class; GError *error = NULL; inv.client_appeared = client_appeared; inv.client_disappeared = client_disappeared; inv.client_user_data = user_data; inv.dbus_interface_skeleton_class = g_type_class_ref (G_TYPE_DBUS_INTERFACE_SKELETON); object_class = G_OBJECT_CLASS (inv.dbus_interface_skeleton_class); inv.overridden_constructor = object_class->constructor; object_class->constructor = hook_dbus_interface_skeleton_constructor; inv.clients = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, invocation_client_unref); g_dbus_connection_add_filter (connection, on_connection_filter, NULL, NULL); inv.authority = polkit_authority_get_sync (NULL, &error); if (error != NULL) { g_warning ("Couldn't connect to polkit: %s", error->message); g_error_free (error); } }
static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { exported = mock_service_create_and_export (connection, "/otree"); exported_b = mock_service_create_and_export (connection, "/different"); g_dbus_connection_add_filter (connection, on_filter_func, NULL, NULL); }
static gboolean on_new_direct_connection (GDBusServer *server, GDBusConnection *connection, gpointer unused) { direct = mock_service_create_and_export (connection, "/otree"); direct_b = mock_service_create_and_export (connection, "/different"); g_dbus_connection_add_filter (connection, on_filter_func, NULL, NULL); return TRUE; }
static void cs_notification_watcher_init (CsNotificationWatcher *watcher) { GError *error = NULL; GVariant *rulev; GVariant *result; watcher->connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); if (!watcher->connection) { g_printerr ("CsNotificationWatcher: Could not connect to session bus - %s\n", error->message); g_clear_error (&error); return; } rulev = g_variant_new("(s)", MATCH_RULE); result = g_dbus_connection_call_sync (watcher->connection, DBUS_SERVICE, DBUS_PATH, DBUS_INTERFACE, "AddMatch", rulev, G_VARIANT_TYPE ("()"), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (!result) { g_printerr ("CsNotificationWatcher: Could not add match rule to bus - %s\n", error->message); g_clear_error (&error); return; } watcher->filter_id = g_dbus_connection_add_filter (watcher->connection, (GDBusMessageFilterFunction) notification_filter_func, watcher, NULL); }
static GObject* gkd_secret_service_constructor (GType type, guint n_props, GObjectConstructParam *props) { GkdSecretService *self = GKD_SECRET_SERVICE (G_OBJECT_CLASS (gkd_secret_service_parent_class)->constructor(type, n_props, props)); GError *error = NULL; GckSlot *slot = NULL; guint i; g_return_val_if_fail (self, NULL); g_return_val_if_fail (self->connection, NULL); /* Find the pkcs11-slot parameter */ for (i = 0; !slot && i < n_props; ++i) { if (g_str_equal (props[i].pspec->name, "pkcs11-slot")) slot = g_value_get_object (props[i].value); } /* Create our objects proxy */ g_return_val_if_fail (GCK_IS_SLOT (slot), NULL); self->objects = g_object_new (GKD_SECRET_TYPE_OBJECTS, "pkcs11-slot", slot, "service", self, NULL); self->skeleton = gkd_secret_service_skeleton_new (self); g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (self->skeleton), self->connection, SECRET_SERVICE_PATH, &error); if (error != NULL) { g_warning ("could not register secret service on session bus: %s", error->message); g_clear_error (&error); } g_signal_connect (self->skeleton, "handle-change-lock", G_CALLBACK (service_method_change_lock), self); g_signal_connect (self->skeleton, "handle-create-collection", G_CALLBACK (service_method_create_collection), self); g_signal_connect (self->skeleton, "handle-get-secrets", G_CALLBACK (service_method_get_secrets), self); g_signal_connect (self->skeleton, "handle-lock", G_CALLBACK (service_method_lock), self); g_signal_connect (self->skeleton, "handle-lock-service", G_CALLBACK (service_method_lock_service), self); g_signal_connect (self->skeleton, "handle-open-session", G_CALLBACK (service_method_open_session), self); g_signal_connect (self->skeleton, "handle-read-alias", G_CALLBACK (service_method_read_alias), self); g_signal_connect (self->skeleton, "handle-search-items", G_CALLBACK (service_method_search_items), self); g_signal_connect (self->skeleton, "handle-set-alias", G_CALLBACK (service_method_set_alias), self); g_signal_connect (self->skeleton, "handle-unlock", G_CALLBACK (service_method_unlock), self); self->internal_skeleton = gkd_exported_internal_skeleton_new (); g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (self->internal_skeleton), self->connection, SECRET_SERVICE_PATH, &error); if (error != NULL) { g_warning ("could not register internal interface service on session bus: %s", error->message); g_clear_error (&error); } g_signal_connect (self->internal_skeleton, "handle-change-with-master-password", G_CALLBACK (service_method_change_with_master_password), self); g_signal_connect (self->internal_skeleton, "handle-change-with-prompt", G_CALLBACK (service_method_change_with_prompt), self); g_signal_connect (self->internal_skeleton, "handle-create-with-master-password", G_CALLBACK (service_method_create_with_master_password), self); g_signal_connect (self->internal_skeleton, "handle-unlock-with-master-password", G_CALLBACK (service_method_unlock_with_master_password), self); self->name_owner_id = g_dbus_connection_signal_subscribe (self->connection, NULL, "org.freedesktop.DBus", "NameOwnerChanged", NULL, NULL, G_DBUS_SIGNAL_FLAGS_NONE, service_name_owner_changed, self, NULL); self->filter_id = g_dbus_connection_add_filter (self->connection, service_message_filter, self, NULL); gkd_secret_service_init_collections (self); return G_OBJECT (self); }