[gnome-photos/wip/rishi/online-miners: 9/10] online miner manager
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos/wip/rishi/online-miners: 9/10] online miner manager
- Date: Sat, 3 Apr 2021 23:36:12 +0000 (UTC)
commit d9c48c58265a7c18342728e051376caee5267851
Author: Debarshi Ray <debarshir gnome org>
Date: Sun Apr 4 01:32:35 2021 +0200
online miner manager
src/photos-online-miner-manager.c | 56 +++++++++++++++++++++++++++++++++++++--
1 file changed, 54 insertions(+), 2 deletions(-)
---
diff --git a/src/photos-online-miner-manager.c b/src/photos-online-miner-manager.c
index 964bfc33..e0d36b10 100644
--- a/src/photos-online-miner-manager.c
+++ b/src/photos-online-miner-manager.c
@@ -19,11 +19,14 @@
#include "config.h"
+#include <tracker-sparql.h>
+
#include "photos-debug.h"
#include "photos-online-miner-manager.h"
#include "photos-online-miner-process.h"
#include "photos-search-context.h"
#include "photos-source-manager.h"
+#include "photos-tracker-queue.h"
#include "photos-utils.h"
@@ -36,7 +39,9 @@ struct _PhotosOnlineMinerManager
GHashTable *online_miner_to_refresh_id;
GHashTable *provider_type_to_online_miner;
GList *online_miners_running;
+ GPtrArray *endpoints;
PhotosBaseManager *src_mngr;
+ PhotosTrackerQueue *queue;
gboolean is_initialized;
};
@@ -108,7 +113,7 @@ photos_online_miner_manager_authorize_authenticated_peer (PhotosOnlineMinerManag
static void
-photos_online_miner_manager_create_all (PhotosOnlineMinerManager *self)
+photos_online_miner_manager_create_all_online_miners (PhotosOnlineMinerManager *self)
{
GIOExtensionPoint *extension_point;
GList *extensions;
@@ -139,6 +144,41 @@ photos_online_miner_manager_create_all (PhotosOnlineMinerManager *self)
}
+static void
+photos_online_miner_manager_create_endpoint (PhotosOnlineMinerManager *self,
+ PhotosOnlineMinerProcess *online_miner,
+ GDBusConnection *dbus_connection)
+{
+ TrackerEndpointDBus *endpoint = NULL; /* TODO: use g_autoptr */
+ TrackerSparqlConnection *sparql_connection_online;
+
+ if (G_UNLIKELY (self->queue == NULL))
+ goto out;
+
+ sparql_connection_online = photos_tracker_queue_get_connection_online (self->queue);
+
+ {
+ g_autoptr (GError) error = NULL;
+
+ endpoint = tracker_endpoint_dbus_new (sparql_connection_online, dbus_connection, NULL, NULL, &error);
+ if (error != NULL)
+ {
+ const gchar *provider_type;
+
+ provider_type = photos_online_miner_process_get_provider_type (online_miner);
+ g_warning ("Unable to create TrackerEndpoint for %s: %s", provider_type, error->message);
+ goto out;
+ }
+ }
+
+ g_ptr_array_add (self->endpoints, g_object_ref (endpoint));
+
+ out:
+ g_clear_object (&endpoint);
+ return;
+}
+
+
static void
photos_online_miner_manager_insert_shared_content (GObject *source_object, GAsyncResult *res, gpointer
user_data)
{
@@ -182,6 +222,7 @@ photos_online_miner_manager_new_connection (PhotosOnlineMinerManager *self, GDBu
if (photos_online_miner_process_matches_credentials (online_miner, credentials))
{
photos_online_miner_process_set_connection (online_miner, connection);
+ photos_online_miner_manager_create_endpoint (self, online_miner, connection);
ret_val = TRUE;
break;
}
@@ -399,8 +440,10 @@ photos_online_miner_manager_dispose (GObject *object)
}
g_clear_object (&self->src_mngr);
+ g_clear_object (&self->queue);
g_clear_pointer (&self->provider_type_to_online_miner, g_hash_table_unref);
g_clear_pointer (&self->online_miners_running, photos_utils_object_list_free_full);
+ g_clear_pointer (&self->endpoints, g_ptr_array_unref);
G_OBJECT_CLASS (photos_online_miner_manager_parent_class)->dispose (object);
}
@@ -429,6 +472,7 @@ photos_online_miner_manager_init (PhotosOnlineMinerManager *self)
self->cancellable = g_cancellable_new ();
self->online_miner_to_refresh_id = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref,
NULL);
self->provider_type_to_online_miner = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
g_object_unref);
+ self->endpoints = g_ptr_array_new_with_free_func (g_object_unref);
self->src_mngr = g_object_ref (state->src_mngr);
g_signal_connect_object (self->src_mngr,
@@ -441,6 +485,14 @@ photos_online_miner_manager_init (PhotosOnlineMinerManager *self)
G_CALLBACK (photos_online_miner_manager_refresh_all),
self,
G_CONNECT_SWAPPED);
+
+ {
+ g_autoptr (GError) error = NULL;
+
+ self->queue = photos_tracker_queue_dup_singleton (NULL, &error);
+ if (G_UNLIKELY (error != NULL))
+ g_warning ("Unable to create PhotosTrackerQueue: %s", error->message);
+ }
}
@@ -517,7 +569,7 @@ photos_online_miner_manager_initable_init (GInitable *initable, GCancellable *ca
g_dbus_server_start (self->dbus_server);
- photos_online_miner_manager_create_all (self);
+ photos_online_miner_manager_create_all_online_miners (self);
photos_online_miner_manager_refresh_all (self);
ret_val = TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]