summaryrefslogtreecommitdiff
path: root/src/libtracker-sparql/direct/tracker-direct.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2021-04-03 15:43:49 +0200
committerCarlos Garnacho <carlosg@gnome.org>2022-02-10 23:32:00 +0100
commite4c3a5bc154c7003250501cc7d51740a975304ad (patch)
treed6ae2845af86dabe1ea357f15cf2a0b265d845e2 /src/libtracker-sparql/direct/tracker-direct.c
parent0186235b66aedf6401d24c5263415bbb6409335f (diff)
downloadtracker-e4c3a5bc154c7003250501cc7d51740a975304ad.tar.gz
libtracker-sparql: Add tracker_sparql_connection_map_connection()
This API call allows hooking up a local TrackerSparqlConnection into another, so it is possible to access other local connections from one of them. This happens via the SERVICE SPARQL syntax, using special local:$handle_name URIs. This may be useful if there is data with different relevance (e.g. cache vs persistent) that the application is interested in maintaining separately, but query altogether.
Diffstat (limited to 'src/libtracker-sparql/direct/tracker-direct.c')
-rw-r--r--src/libtracker-sparql/direct/tracker-direct.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/libtracker-sparql/direct/tracker-direct.c b/src/libtracker-sparql/direct/tracker-direct.c
index 8317f40d3..cc6445fcc 100644
--- a/src/libtracker-sparql/direct/tracker-direct.c
+++ b/src/libtracker-sparql/direct/tracker-direct.c
@@ -1368,6 +1368,22 @@ tracker_direct_connection_serialize_finish (TrackerSparqlConnection *connection
}
static void
+tracker_direct_connection_map_connection (TrackerSparqlConnection *connection,
+ const gchar *handle_name,
+ TrackerSparqlConnection *service_connection)
+{
+ TrackerDirectConnectionPrivate *priv;
+ TrackerDirectConnection *conn;
+
+ conn = TRACKER_DIRECT_CONNECTION (connection);
+ priv = tracker_direct_connection_get_instance_private (conn);
+
+ tracker_data_manager_map_connection (priv->data_manager,
+ handle_name,
+ service_connection);
+}
+
+static void
tracker_direct_connection_class_init (TrackerDirectConnectionClass *klass)
{
TrackerSparqlConnectionClass *sparql_connection_class;
@@ -1404,6 +1420,7 @@ tracker_direct_connection_class_init (TrackerDirectConnectionClass *klass)
sparql_connection_class->lookup_dbus_service = tracker_direct_connection_lookup_dbus_service;
sparql_connection_class->serialize_async = tracker_direct_connection_serialize_async;
sparql_connection_class->serialize_finish = tracker_direct_connection_serialize_finish;
+ sparql_connection_class->map_connection = tracker_direct_connection_map_connection;
props[PROP_FLAGS] =
g_param_spec_flags ("flags",