summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Hruby <michal.mhr@gmail.com>2011-02-02 16:23:46 +0100
committerMichal Hruby <michal.mhr@gmail.com>2011-02-02 16:23:46 +0100
commite706b7f7282fbf28463e00fcac2492697a4605d1 (patch)
treedd4197dee833b9232970e688768041ee74bb88b2
parent967712ffa7f6e51c50ed3d1320336616da7027b8 (diff)
Clean up DataProvider API
-rw-r--r--src/data-provider.vala11
-rw-r--r--src/recent-manager-provider.vala23
-rw-r--r--src/zeitgeist-datahub.vala22
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)
{