summaryrefslogtreecommitdiff
path: root/src/libtracker-sparql-backend
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-06-03 00:32:34 +0200
committerCarlos Garnacho <carlosg@gnome.org>2017-06-29 19:51:47 +0200
commit85b8ff8859d7e7815a72568e86ed78376db2847e (patch)
tree4ba16b467b40a0695e7a796f27c1d9ffc5d454a5 /src/libtracker-sparql-backend
parent38c70b6e857f20b446524166d2f5d20378928d5b (diff)
downloadtracker-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.vala11
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: