diff options
author | Siegfried-Angel Gevatter Pujals <siegfried@gevatter.com> | 2012-03-26 17:31:28 +0200 |
---|---|---|
committer | Siegfried-Angel Gevatter Pujals <siegfried@gevatter.com> | 2012-03-26 17:31:28 +0200 |
commit | 2f613dc7377b83c5f7a6dee4d868b7431203b107 (patch) | |
tree | 1279fe58cd01295fc48410f5997a864c382b906c | |
parent | d9d77a665a3a0263885cd314e361f70bf7d42072 (diff) | |
download | zeitgeist-2f613dc7377b83c5f7a6dee4d868b7431203b107.tar.gz |
Add limit parameter to Events.to_variant_with_limit
-rw-r--r-- | src/datamodel.vala | 12 |
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); } |