diff options
author | Michal Hruby <michal.mhr@gmail.com> | 2011-02-02 16:23:46 +0100 |
---|---|---|
committer | Michal Hruby <michal.mhr@gmail.com> | 2011-02-02 16:23:46 +0100 |
commit | e706b7f7282fbf28463e00fcac2492697a4605d1 (patch) | |
tree | dd4197dee833b9232970e688768041ee74bb88b2 | |
parent | 967712ffa7f6e51c50ed3d1320336616da7027b8 (diff) |
Clean up DataProvider API
-rw-r--r-- | src/data-provider.vala | 11 | ||||
-rw-r--r-- | src/recent-manager-provider.vala | 23 | ||||
-rw-r--r-- | src/zeitgeist-datahub.vala | 22 |
3 files changed, 20 insertions, 36 deletions
diff --git a/src/data-provider.vala b/src/data-provider.vala index b125836..1334eff 100644 --- a/src/data-provider.vala +++ b/src/data-provider.vala @@ -35,21 +35,12 @@ public abstract class DataProvider : Object public virtual void start () { - items_available (); } public virtual void stop () { } - - protected abstract List<Event> _get_items (); - // DataHub will call get_items when items_available is emitted - public List<Event> get_items () - { - if (enabled) return _get_items (); - return new List<Event> (); - } - public signal void items_available (); + public signal void items_available (GenericArray<Event> events); } diff --git a/src/recent-manager-provider.vala b/src/recent-manager-provider.vala index 7e3cb73..4079210 100644 --- a/src/recent-manager-provider.vala +++ b/src/recent-manager-provider.vala @@ -58,7 +58,7 @@ public class RecentManagerGtk : DataProvider { recent_manager.changed.connect (this.items_changed); - items_available (); + items_available (get_items ()); } public override void stop () @@ -72,18 +72,16 @@ public class RecentManagerGtk : DataProvider { idle_id = Idle.add (() => { - items_available (); + items_available (get_items ()); idle_id = 0; return false; }); } } - protected override List<Event> _get_items () + protected GenericArray<Event> get_items () { - List<Event> events = new List<Event> (); - - if (!enabled) return events; + GenericArray<Event> events = new GenericArray<Event> (); int64 signal_time = Timestamp.now (); string[] ignored_actors = datahub.get_data_source_actors (); @@ -134,10 +132,7 @@ public class RecentManagerGtk : DataProvider continue; } - unowned string? right_sep = ri.get_uri ().rstr (Path.DIR_SEPARATOR_S); - string origin = right_sep != null ? - ri.get_uri ().ndup ((char*) right_sep - (char*) ri.get_uri ()) : - ri.get_uri (); + string origin = Path.get_dirname (ri.get_uri ()); var subject = new Subject.full (ri.get_uri (), interpretation_for_mimetype (ri.get_mime_type ()), @@ -160,7 +155,7 @@ public class RecentManagerGtk : DataProvider event.set_timestamp (timestamp); if (timestamp > last_timestamp && timestamp >= 0) { - events.prepend ((owned) event); + events.add ((owned) event); } event = new Event.full (ZG_MODIFY_EVENT, @@ -172,7 +167,7 @@ public class RecentManagerGtk : DataProvider event.set_timestamp (timestamp); if (timestamp > last_timestamp && timestamp >= 0) { - events.prepend ((owned) event); + events.add ((owned) event); } event = new Event.full (ZG_ACCESS_EVENT, @@ -184,14 +179,12 @@ public class RecentManagerGtk : DataProvider event.set_timestamp (timestamp); if (timestamp > last_timestamp && timestamp >= 0) { - events.prepend ((owned) event); + events.add ((owned) event); } - } last_timestamp = signal_time; - events.reverse (); return events; } diff --git a/src/zeitgeist-datahub.vala b/src/zeitgeist-datahub.vala index cd80a5e..663d1b5 100644 --- a/src/zeitgeist-datahub.vala +++ b/src/zeitgeist-datahub.vala @@ -35,7 +35,7 @@ public class DataHub : Object, DataHubService private MainLoop main_loop; private List<DataProvider> providers; private List<DataSource> sources_info; // list got from ZG's Registry - private List<Event> queued_events; + private GenericArray<Event> queued_events; private uint idle_id = 0; public DataHub () @@ -47,7 +47,7 @@ public class DataHub : Object, DataHubService { providers = new List<DataProvider> (); sources_info = new List<DataSource> (); - queued_events = new List<Event> (); + queued_events = new GenericArray<Event> (); main_loop = new MainLoop (); zg_log = new Zeitgeist.Log (); @@ -147,10 +147,13 @@ public class DataHub : Object, DataHubService } } - private void items_available (DataProvider prov) + private void items_available (DataProvider prov, GenericArray<Event> events) { - queued_events.concat (prov.get_items ()); - if (queued_events != null && idle_id == 0) + if (!prov.enabled) return; + + events.foreach ((e) => { queued_events.add (e); }); + + if (queued_events.length > 0 && idle_id == 0) { idle_id = Idle.add (() => { @@ -163,21 +166,18 @@ public class DataHub : Object, DataHubService private void insert_events () { - debug ("Inserting %u events", queued_events.length ()); + debug ("Inserting %u events", queued_events.length); batch_insert_events (); - queued_events = new List<Event> (); + queued_events = new GenericArray<Event> (); } protected async void batch_insert_events () { // copy the events to GenericArray (with a ref on them) GenericArray<Event> all_events = new GenericArray<Event> (); - foreach (var e in queued_events) - { - all_events.add (e); - } + queued_events.foreach ((e) => { all_events.add (e); }); while (all_events.length > 0) { |