diff options
Diffstat (limited to 'src/tracker-store/tracker-resources.vala')
-rw-r--r-- | src/tracker-store/tracker-resources.vala | 89 |
1 files changed, 4 insertions, 85 deletions
diff --git a/src/tracker-store/tracker-resources.vala b/src/tracker-store/tracker-resources.vala index c6a76e749..7322636d1 100644 --- a/src/tracker-store/tracker-resources.vala +++ b/src/tracker-store/tracker-resources.vala @@ -22,8 +22,6 @@ public class Tracker.Resources : Object { public const string PATH = "/org/freedesktop/Tracker1/Resources"; - const int GRAPH_UPDATED_IMMEDIATE_EMIT_AT = 50000; - /* I *know* that this is some arbitrary number that doesn't seem to * resemble anything. In fact it's what I experimentally measured to * be a good value on a default Debian testing which has @@ -50,15 +48,13 @@ public class Tracker.Resources : Object { const int DBUS_ARBITRARY_MAX_MSG_SIZE = 10000000; DBusConnection connection; - uint signal_timeout; - Tracker.Config config; public signal void writeback ([DBus (signature = "a{iai}")] Variant subjects); public signal void graph_updated (string classname, [DBus (signature = "a(iiii)")] Variant deletes, [DBus (signature = "a(iiii)")] Variant inserts); - public Resources (DBusConnection connection, Tracker.Config config_p) { + public Resources (DBusConnection connection) { this.connection = connection; - this.config = config_p; + Tracker.Store.set_signal_callback (on_emit_signals); } public async void load (BusName sender, string uri) throws Error { @@ -246,9 +242,7 @@ public class Tracker.Resources : Object { writeback (builder.end ()); } - bool on_emit_signals () { - var events = Tracker.Events.get_pending (); - + void on_emit_signals (HashTable<Tracker.Class, Tracker.Events.Batch>? events, HashTable<int, GLib.Array<int>>? writebacks) { if (events != null) { var iter = HashTableIter<Tracker.Class, Tracker.Events.Batch> (events); unowned Events.Batch class_events; @@ -259,88 +253,13 @@ public class Tracker.Resources : Object { } } - /* Writeback feature */ - var writebacks = Tracker.Writeback.get_ready (); - if (writebacks != null) { emit_writeback (writebacks); } - - signal_timeout = 0; - return false; - } - - void on_statements_committed () { - Tracker.Events.transact (); - Tracker.Writeback.transact (); - check_graph_updated_signal (); - - if (signal_timeout == 0) { - signal_timeout = Timeout.add (config.graphupdated_delay, on_emit_signals); - } - } - - void on_statements_rolled_back () { - Tracker.Events.reset_pending (); - Tracker.Writeback.reset_pending (); - } - - void check_graph_updated_signal () { - /* Check for whether we need an immediate emit */ - if (Tracker.Events.get_total () > GRAPH_UPDATED_IMMEDIATE_EMIT_AT) { - // possibly active timeout no longer necessary as signals - // for committed transactions will be emitted by the following on_emit_signals call - // do this before actually calling on_emit_signals as on_emit_signals sets signal_timeout to 0 - if (signal_timeout != 0) { - Source.remove (signal_timeout); - signal_timeout = 0; - } - - // immediately emit signals for already committed transaction - Idle.add (() => { - on_emit_signals (); - return false; - }); - } - } - - void on_statement_inserted (int graph_id, string? graph, int subject_id, string subject, int pred_id, int object_id, string? object, PtrArray rdf_types) { - Tracker.Events.add_insert (graph_id, subject_id, subject, pred_id, object_id, object, rdf_types); - Tracker.Writeback.check (graph_id, graph, subject_id, subject, pred_id, object_id, object, rdf_types); - } - - void on_statement_deleted (int graph_id, string? graph, int subject_id, string subject, int pred_id, int object_id, string? object, PtrArray rdf_types) { - Tracker.Events.add_delete (graph_id, subject_id, subject, pred_id, object_id, object, rdf_types); - Tracker.Writeback.check (graph_id, graph, subject_id, subject, pred_id, object_id, object, rdf_types); - } - - [DBus (visible = false)] - public void enable_signals () { - var data_manager = Tracker.Main.get_data_manager (); - var data = data_manager.get_data (); - data.add_insert_statement_callback (on_statement_inserted); - data.add_delete_statement_callback (on_statement_deleted); - data.add_commit_statement_callback (on_statements_committed); - data.add_rollback_statement_callback (on_statements_rolled_back); - } - - [DBus (visible = false)] - public void disable_signals () { - var data_manager = Tracker.Main.get_data_manager (); - var data = data_manager.get_data (); - data.remove_insert_statement_callback (on_statement_inserted); - data.remove_delete_statement_callback (on_statement_deleted); - data.remove_commit_statement_callback (on_statements_committed); - data.remove_rollback_statement_callback (on_statements_rolled_back); - - if (signal_timeout != 0) { - Source.remove (signal_timeout); - signal_timeout = 0; - } } ~Resources () { - this.disable_signals (); + Tracker.Store.set_signal_callback (null); } [DBus (visible = false)] |