mirror of
https://github.com/zeek/zeek.git
synced 2025-10-09 18:18:19 +00:00
EventRegistry/Func: Disable events when all bodies are disabled
This is just a small optimization on top of what is there. Add state to Func for tracking if any enabled bodies exist which allows us to propagate it up to the EventHandler::bool() operator. In turn, when all bodies of an event's Func have been runtime disabled, the event itself will not be invoked anymore. Experiments have shown that this allows runtime toggling of new_event() without performance impact when disabled. This could enable use-cases where new_packet() handlers are enabled for a split second once in a while to either dump or sample raw packet data at runtime.
This commit is contained in:
parent
92e4c11914
commit
21cc5f9132
6 changed files with 163 additions and 7 deletions
|
@ -24,7 +24,8 @@ EventHandler::EventHandler(std::string arg_name)
|
|||
|
||||
EventHandler::operator bool() const
|
||||
{
|
||||
return enabled && ((local && local->HasBodies()) || generate_always || ! auto_publish.empty());
|
||||
return enabled &&
|
||||
((local && local->HasEnabledBodies()) || generate_always || ! auto_publish.empty());
|
||||
}
|
||||
|
||||
const FuncTypePtr& EventHandler::GetType(bool check_export)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue