[tracker/wip/carlosg/local-connection-mapping: 1/2] libtracker-data: Add private API to map local connections




commit c69035debdf7411edecf4b5b86445ae75e33df2c
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Apr 3 15:43:16 2021 +0200

    libtracker-data: Add private API to map local connections
    
    These will be available via special local:$handle_name URIs.

 src/libtracker-data/tracker-data-manager.c | 24 ++++++++++++++++++------
 src/libtracker-data/tracker-data-manager.h |  3 +++
 2 files changed, 21 insertions(+), 6 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 2be94685d..777d98704 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -147,6 +147,9 @@ static void
 tracker_data_manager_init (TrackerDataManager *manager)
 {
        manager->generation = 1;
+       manager->cached_connections =
+               g_hash_table_new_full (g_str_hash, g_str_equal,
+                                      g_free, g_object_unref);
        g_mutex_init (&manager->connections_lock);
 }
 
@@ -5014,12 +5017,6 @@ tracker_data_manager_get_remote_connection (TrackerDataManager  *data_manager,
 
        g_mutex_lock (&data_manager->connections_lock);
 
-       if (!data_manager->cached_connections) {
-               data_manager->cached_connections =
-                       g_hash_table_new_full (g_str_hash, g_str_equal,
-                                              g_free, g_object_unref);
-       }
-
        connection = g_hash_table_lookup (data_manager->cached_connections, uri);
 
        if (!connection) {
@@ -5087,3 +5084,18 @@ fail:
 
        return connection;
 }
+
+void
+tracker_data_manager_map_local_connection (TrackerDataManager      *data_manager,
+                                           const gchar             *handle_name,
+                                           TrackerSparqlConnection *connection)
+{
+       gchar *uri;
+
+       uri = g_strdup_printf ("local:%s", handle_name);
+
+       g_mutex_lock (&data_manager->connections_lock);
+       g_hash_table_insert (data_manager->cached_connections,
+                            uri, g_object_ref (connection));
+       g_mutex_unlock (&data_manager->connections_lock);
+}
diff --git a/src/libtracker-data/tracker-data-manager.h b/src/libtracker-data/tracker-data-manager.h
index 388b72f08..52e71416b 100644
--- a/src/libtracker-data/tracker-data-manager.h
+++ b/src/libtracker-data/tracker-data-manager.h
@@ -115,6 +115,9 @@ gboolean             tracker_data_manager_expand_prefix (TrackerDataManager  *ma
 TrackerSparqlConnection * tracker_data_manager_get_remote_connection (TrackerDataManager  *data_manager,
                                                                       const gchar         *uri,
                                                                       GError             **error);
+void tracker_data_manager_map_local_connection (TrackerDataManager      *data_manager,
+                                                const gchar             *handle_name,
+                                                TrackerSparqlConnection *connection);
 
 G_END_DECLS
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]