EventMgr: Add Dispatch() with handler and args

Allow users to call event_mgr.Dispatch(handler, args) instead of
constructing the Event instance themselves. Deprecate the old API
and replace users.

There's a subtle change that net_done() may be propagated via
auto_publish() now, but that still needs opt-in from script land
and likely no one did that, or else they'd expected to have it
work anyhow.
This commit is contained in:
Arne Welzel 2025-04-07 09:53:44 +02:00
parent 6d97d5526a
commit 0e027fa4e3
7 changed files with 34 additions and 14 deletions

View file

@ -80,8 +80,15 @@ public:
return Enqueue(h, zeek::Args{std::forward<Args>(args)...});
}
[[deprecated("Remove in v8.1: Use Dispatch(handler, args) instead.")]]
void Dispatch(Event* event, bool no_remote = false);
// Dispatch an event with the given handler and arguments immediately.
//
// While the event is technically not queued, HookQueueEvent() is
// invoked on the Event instance regardless.
void Dispatch(const EventHandlerPtr& h, zeek::Args vl);
void Drain();
bool IsDraining() const { return current != nullptr; }