cluster/Backend: Pass node_id via Init()

This commit is contained in:
Arne Welzel 2025-01-13 19:45:08 +01:00
parent 0b7a660a34
commit 769044e8e1
3 changed files with 20 additions and 4 deletions

View file

@ -585,7 +585,7 @@ function log(msg: string)
function init(): bool
{
return Cluster::Backend::__init();
return Cluster::Backend::__init(Cluster::node_id());
}
function subscribe(topic: string): bool

View file

@ -149,8 +149,14 @@ public:
/**
* Method invoked from the Cluster::Backend::__init() bif.
*
* @param nid The node identifier to use.
*/
bool Init() { return DoInit(); }
bool Init(std::string nid) {
node_id = std::move(nid);
return DoInit();
}
/**
* Hook invoked when Zeek is about to terminate.
@ -209,6 +215,11 @@ public:
return DoPublishLogWrites(header, records);
}
/**
* @return This backend's node identifier.
*/
const std::string& NodeId() const { return node_id; }
protected:
/**
* Constructor.
@ -362,6 +373,11 @@ private:
std::unique_ptr<EventSerializer> event_serializer;
std::unique_ptr<LogSerializer> log_serializer;
std::unique_ptr<detail::EventHandlingStrategy> event_handling_strategy;
/**
* The backend's instance cluster node identifier.
*/
std::string node_id;
};
/**

View file

@ -64,9 +64,9 @@ function Cluster::__unsubscribe%(topic_prefix: string%): bool
## Initialize the global cluster backend.
##
## Returns: true on success.
function Cluster::Backend::__init%(%): bool
function Cluster::Backend::__init%(nid: string%): bool
%{
auto rval = zeek::cluster::backend->Init();
auto rval = zeek::cluster::backend->Init(nid->ToStdString());
return zeek::val_mgr->Bool(rval);
%}