mirror of
https://github.com/zeek/zeek.git
synced 2025-10-12 11:38:20 +00:00
rename the update_finished event to end_of_data and make it fire in
more cases. It will now not only fire after table-reads have been completed, but also after the last event of a whole-file-read (or whole-db-read, etc.). The interface also has been extended a bit to allow readers to directly fire the event should they so choose. This allows the event to be fired in direct table-setting/event-sending modes, which was previously not possible.
This commit is contained in:
parent
296686d5ca
commit
a6d87fcab7
29 changed files with 101 additions and 94 deletions
|
@ -196,7 +196,7 @@ Manager::TableStream::~TableStream()
|
|||
|
||||
Manager::Manager()
|
||||
{
|
||||
update_finished = internal_handler("Input::update_finished");
|
||||
end_of_data = internal_handler("Input::end_of_data");
|
||||
}
|
||||
|
||||
Manager::~Manager()
|
||||
|
@ -1169,8 +1169,12 @@ void Manager::EndCurrentSend(ReaderFrontend* reader)
|
|||
DBG_LOG(DBG_INPUT, "Got EndCurrentSend stream %s", i->name.c_str());
|
||||
#endif
|
||||
|
||||
if ( i->stream_type == EVENT_STREAM ) // nothing to do..
|
||||
if ( i->stream_type == EVENT_STREAM )
|
||||
{
|
||||
// just signal the end of the data source
|
||||
SendEndOfData(i);
|
||||
return;
|
||||
}
|
||||
|
||||
assert(i->stream_type == TABLE_STREAM);
|
||||
TableStream* stream = (TableStream*) i;
|
||||
|
@ -1251,14 +1255,29 @@ void Manager::EndCurrentSend(ReaderFrontend* reader)
|
|||
stream->currDict->SetDeleteFunc(input_hash_delete_func);
|
||||
|
||||
#ifdef DEBUG
|
||||
DBG_LOG(DBG_INPUT, "EndCurrentSend complete for stream %s, queueing update_finished event",
|
||||
DBG_LOG(DBG_INPUT, "EndCurrentSend complete for stream %s",
|
||||
i->name.c_str());
|
||||
#endif
|
||||
|
||||
// Send event that the current update is indeed finished.
|
||||
SendEvent(update_finished, 2, new StringVal(i->name.c_str()), new StringVal(i->info->source));
|
||||
SendEndOfData(i);
|
||||
}
|
||||
|
||||
void Manager::SendEndOfData(ReaderFrontend* reader) {
|
||||
Stream *i = FindStream(reader);
|
||||
|
||||
if ( i == 0 )
|
||||
{
|
||||
reporter->InternalError("Unknown reader in SendEndOfData");
|
||||
return;
|
||||
}
|
||||
|
||||
SendEndOfData(i);
|
||||
}
|
||||
|
||||
void Manager::SendEndOfData(const Stream *i) {
|
||||
SendEvent(end_of_data, 2, new StringVal(i->name.c_str()), new StringVal(i->info->source));
|
||||
}
|
||||
|
||||
void Manager::Put(ReaderFrontend* reader, Value* *vals)
|
||||
{
|
||||
Stream *i = FindStream(reader);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue