summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiegfried-Angel Gevatter Pujals <siegfried@gevatter.com>2012-03-26 17:31:28 +0200
committerSiegfried-Angel Gevatter Pujals <siegfried@gevatter.com>2012-03-26 17:31:28 +0200
commit2f613dc7377b83c5f7a6dee4d868b7431203b107 (patch)
tree1279fe58cd01295fc48410f5997a864c382b906c
parentd9d77a665a3a0263885cd314e361f70bf7d42072 (diff)
downloadzeitgeist-2f613dc7377b83c5f7a6dee4d868b7431203b107.tar.gz
Add limit parameter to Events.to_variant_with_limit
-rw-r--r--src/datamodel.vala12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/datamodel.vala b/src/datamodel.vala
index a8d06a41..fed22713 100644
--- a/src/datamodel.vala
+++ b/src/datamodel.vala
@@ -621,8 +621,11 @@ namespace Zeitgeist
return vb.end ();
}
- public static Variant to_variant_with_limit (GenericArray<Event?> events)
- throws EngineError
+ /* Same as to_variant but raises an exception if the variant size
+ * exceeds `limit' bytes.
+ * */
+ public static Variant to_variant_with_limit (GenericArray<Event?> events,
+ size_t limit=Utils.MAX_DBUS_RESULT_SIZE) throws EngineError
{
var vb = new VariantBuilder(new VariantType("a("+Utils.SIG_EVENT+")"));
@@ -642,13 +645,12 @@ namespace Zeitgeist
}
variant_size += event_variant.get_size();
- if (variant_size > Utils.MAX_DBUS_RESULT_SIZE)
+ if (variant_size > limit)
{
size_t avg_event_size = variant_size / (i+1);
string error_message = ("Query exceeded size limit of % " +
size_t.FORMAT + "MiB (roughly ~%d events).").printf (
- Utils.MAX_DBUS_RESULT_SIZE / 1024 / 1024,
- Utils.MAX_DBUS_RESULT_SIZE / avg_event_size);
+ limit / 1024 / 1024, limit / avg_event_size);
warning (error_message);
throw new EngineError.TOO_MANY_RESULTS (error_message);
}