diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-06-03 00:32:34 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-06-29 19:51:47 +0200 |
commit | 85b8ff8859d7e7815a72568e86ed78376db2847e (patch) | |
tree | 4ba16b467b40a0695e7a796f27c1d9ffc5d454a5 /src/libtracker-sparql-backend | |
parent | 38c70b6e857f20b446524166d2f5d20378928d5b (diff) | |
download | tracker-85b8ff8859d7e7815a72568e86ed78376db2847e.tar.gz |
libtracker-direct: Allow creating readwrite databases through direct connection
This will allow creating sparql databases that are private to applications. They
will be able to get multiple readonly handles, and updates will be handled by
a single private thread. Pretty much like tracker-store (and the refactor took
heavy inspiration from it), just sans dbus.
So far, only the current direct connections (i.e. readonly, pointing to
~/.cache/tracker) have been replaced.
Diffstat (limited to 'src/libtracker-sparql-backend')
-rw-r--r-- | src/libtracker-sparql-backend/tracker-backend.vala | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libtracker-sparql-backend/tracker-backend.vala b/src/libtracker-sparql-backend/tracker-backend.vala index 6d7e9820f..68eba3355 100644 --- a/src/libtracker-sparql-backend/tracker-backend.vala +++ b/src/libtracker-sparql-backend/tracker-backend.vala @@ -182,6 +182,13 @@ class Tracker.Sparql.Backend : Connection { return yield bus.statistics_async (cancellable); } + private Connection create_readonly_direct () throws GLib.Error, Sparql.Error, IOError, DBusError { + File store = File.new_for_path (Path.build_filename (Environment.get_user_cache_dir(), "tracker")); + var conn = new Tracker.Direct.Connection (Tracker.Sparql.ConnectionFlags.READONLY, store, null, null); + conn.init (); + return conn; + } + // Plugin loading functions private void load_plugins () throws GLib.Error { string env_backend = Environment.get_variable ("TRACKER_SPARQL_BACKEND"); @@ -206,7 +213,7 @@ class Tracker.Sparql.Backend : Connection { switch (backend) { case Backend.AUTO: try { - direct = new Tracker.Direct.Connection (); + direct = create_readonly_direct (); } catch (Error e) { warning ("Falling back to bus backend, the direct backend failed to initialize: " + e.message); } @@ -215,7 +222,7 @@ class Tracker.Sparql.Backend : Connection { break; case Backend.DIRECT: - direct = new Tracker.Direct.Connection (); + direct = create_readonly_direct (); break; case Backend.BUS: |