[tracker/wip/carlosg/bus-connection-methods: 1/4] libtracker-sparql: Implement get_namespace_manager() on bus connection




commit 8064d7ed68d9f81001fe860503c03edd0de24b8b
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Mar 23 11:46:06 2021 +0100

    libtracker-sparql: Implement get_namespace_manager() on bus connection
    
    This was missing, make the bus connection introspect the prefixes that
    are available on the other side of the connection, so we can offer a
    TrackerNamespaceManager for it.

 src/libtracker-sparql/bus/tracker-bus.vala | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
---
diff --git a/src/libtracker-sparql/bus/tracker-bus.vala b/src/libtracker-sparql/bus/tracker-bus.vala
index 985d3f684..6bd12a4ef 100644
--- a/src/libtracker-sparql/bus/tracker-bus.vala
+++ b/src/libtracker-sparql/bus/tracker-bus.vala
@@ -22,6 +22,7 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection {
        string dbus_name;
        string object_path;
        bool sandboxed;
+       NamespaceManager namespaces;
 
        private const string DBUS_PEER_IFACE = "org.freedesktop.DBus.Peer";
 
@@ -58,6 +59,7 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection {
                                reply.to_gerror ();
                                this.dbus_name = dbus_name;
                                this.object_path = object_path;
+                               yield this.init_namespaces ();
                                return;
                        } catch (GLib.Error e) {
                                if (!GLib.FileUtils.test ("/.flatpak-info", GLib.FileTest.EXISTS)) {
@@ -83,6 +85,16 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection {
                this.dbus_name = PORTAL_NAME;
                this.object_path = object_path;
                this.sandboxed = true;
+
+               yield this.init_namespaces ();
+       }
+
+       private async void init_namespaces () throws Sparql.Error, IOError, DBusError, GLib.Error {
+               this.namespaces = new NamespaceManager ();
+               var cursor = yield this.query_async ("SELECT ?prefix ?name { ?name nrl:prefix ?prefix }", 
null);
+               while (cursor.next ())
+                       this.namespaces.add_prefix(cursor.get_string(0), cursor.get_string(1));
+               cursor.close ();
        }
 
        static void pipe (out UnixInputStream input, out UnixOutputStream output) throws IOError {
@@ -349,4 +361,8 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection {
                this.close ();
                return true;
        }
+
+       public override Tracker.NamespaceManager? get_namespace_manager () {
+               return namespaces;
+       }
 }


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