[gnome-photos/wip/rishi/online-miners: 9/10] online miner manager




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]