void gkd_secret_objects_register_collection (GkdSecretObjects *self, const gchar *collection_path) { GkdExportedCollection *skeleton; GError *error = NULL; skeleton = g_hash_table_lookup (self->collections_to_skeletons, collection_path); if (skeleton != NULL) { g_warning ("asked to register collection %s, but it's already registered", collection_path); return; } skeleton = gkd_secret_collection_skeleton_new (self); g_hash_table_insert (self->collections_to_skeletons, g_strdup (collection_path), skeleton); g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (skeleton), gkd_secret_service_get_connection (self->service), collection_path, &error); if (error != NULL) { g_warning ("could not register secret collection on session bus: %s", error->message); g_error_free (error); } g_signal_connect (skeleton, "handle-create-item", G_CALLBACK (collection_method_create_item), self); g_signal_connect (skeleton, "handle-delete", G_CALLBACK (collection_method_delete), self); g_signal_connect (skeleton, "handle-search-items", G_CALLBACK (collection_method_search_items), self); gkd_secret_objects_init_collection_items (self, collection_path); }
static void gkd_secret_objects_register_item (GkdSecretObjects *self, const gchar *item_path) { GkdExportedItem *skeleton; GError *error = NULL; skeleton = g_hash_table_lookup (self->items_to_skeletons, item_path); if (skeleton != NULL) { g_warning ("asked to register item %s, but it's already registered", item_path); return; } skeleton = gkd_secret_item_skeleton_new (self); g_hash_table_insert (self->items_to_skeletons, g_strdup (item_path), skeleton); g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (skeleton), gkd_secret_service_get_connection (self->service), item_path, &error); if (error != NULL) { g_warning ("could not register secret item on session bus: %s", error->message); g_error_free (error); } g_signal_connect (skeleton, "handle-delete", G_CALLBACK (item_method_delete), self); g_signal_connect (skeleton, "handle-get-secret", G_CALLBACK (item_method_get_secret), self); g_signal_connect (skeleton, "handle-set-secret", G_CALLBACK (item_method_set_secret), self); }
static void gkd_secret_service_get_property (GObject *obj, guint prop_id, GValue *value, GParamSpec *pspec) { GkdSecretService *self = GKD_SECRET_SERVICE (obj); switch (prop_id) { case PROP_CONNECTION: g_value_set_object (value, gkd_secret_service_get_connection (self)); break; case PROP_PKCS11_SLOT: g_value_set_object (value, gkd_secret_service_get_pkcs11_slot (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec); break; } }