mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
broker integration: add auto sending remote events
i.e. ability to toggle whether all local dispatches of an event also generate a remote event message to peers.
This commit is contained in:
parent
7e563b7275
commit
5df71ddc91
5 changed files with 150 additions and 2 deletions
|
@ -4,7 +4,8 @@
|
|||
#define EVENTHANDLER
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include "List.h"
|
||||
#include "BroList.h"
|
||||
|
||||
|
@ -28,6 +29,18 @@ public:
|
|||
void AddRemoteHandler(SourceID peer);
|
||||
void RemoveRemoteHandler(SourceID peer);
|
||||
|
||||
#ifdef ENABLE_BROKER
|
||||
void AutoRemote(std::string topic, int flags)
|
||||
{
|
||||
auto_remote_send[std::move(topic)] = flags;
|
||||
}
|
||||
|
||||
void AutoRemoteStop(const std::string& topic)
|
||||
{
|
||||
auto_remote_send.erase(topic);
|
||||
}
|
||||
#endif
|
||||
|
||||
void Call(val_list* vl, bool no_remote = false);
|
||||
|
||||
// Returns true if there is at least one local or remote handler.
|
||||
|
@ -67,6 +80,10 @@ private:
|
|||
declare(List, SourceID);
|
||||
typedef List(SourceID) receiver_list;
|
||||
receiver_list receivers;
|
||||
|
||||
#ifdef ENABLE_BROKER
|
||||
std::map<std::string, int> auto_remote_send; // topic -> flags
|
||||
#endif
|
||||
};
|
||||
|
||||
// Encapsulates a ptr to an event handler to overload the boolean operator.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue