mirror of
https://github.com/zeek/zeek.git
synced 2025-10-10 10:38:20 +00:00
Change the standalone sumstats mode to work incrementally.
This commit is contained in:
parent
8061a34b3e
commit
af36915186
3 changed files with 39 additions and 11 deletions
|
@ -2,23 +2,47 @@
|
|||
|
||||
module SumStats;
|
||||
|
||||
event SumStats::process_epoch_result(ss: SumStat, now: time, data: ResultTable)
|
||||
{
|
||||
# TODO: is this the right processing group size?
|
||||
local i = 50;
|
||||
for ( key in data )
|
||||
{
|
||||
ss$epoch_result(now, key, data[key]);
|
||||
delete data[key];
|
||||
|
||||
if ( |data| == 0 )
|
||||
{
|
||||
if ( ss?$epoch_finished )
|
||||
ss$epoch_finished(now);
|
||||
|
||||
# Now that no data is left we can finish.
|
||||
return;
|
||||
}
|
||||
|
||||
i = i-1;
|
||||
if ( i == 0 )
|
||||
{
|
||||
# TODO: is this the right interval?
|
||||
schedule 0.01 secs { process_epoch_result(ss, now, data) };
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
event SumStats::finish_epoch(ss: SumStat)
|
||||
{
|
||||
if ( ss$name in result_store )
|
||||
{
|
||||
local now = network_time();
|
||||
|
||||
if ( ss?$epoch_result )
|
||||
{
|
||||
local data = result_store[ss$name];
|
||||
# TODO: don't block here.
|
||||
for ( key in data )
|
||||
ss$epoch_result(now, key, data[key]);
|
||||
event SumStats::process_epoch_result(ss, network_time(), data);
|
||||
}
|
||||
|
||||
if ( ss?$epoch_finished )
|
||||
ss$epoch_finished(now);
|
||||
|
||||
# We can reset here because we know that the reference
|
||||
# to the data will be maintained by the process_epoch_result
|
||||
# event.
|
||||
reset(ss);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue