cluster/Event: Hide members behind accessors

This commit is contained in:
Arne Welzel 2025-04-10 18:12:04 +02:00
parent 90f94ff4f2
commit 214629e054
3 changed files with 31 additions and 9 deletions

View file

@ -19,7 +19,7 @@ using namespace zeek::cluster;
bool detail::LocalEventHandlingStrategy::DoHandleRemoteEvent(std::string_view topic, detail::Event e) { bool detail::LocalEventHandlingStrategy::DoHandleRemoteEvent(std::string_view topic, detail::Event e) {
zeek::event_mgr.Enqueue(e.Handler(), std::move(e.args), util::detail::SOURCE_BROKER, 0, nullptr, e.timestamp); zeek::event_mgr.Enqueue(e.Handler(), std::move(e.Args()), util::detail::SOURCE_BROKER, 0, nullptr, e.Timestamp());
return true; return true;
} }

View file

@ -45,14 +45,36 @@ public:
Event(const EventHandlerPtr& handler, zeek::Args args, double timestamp = 0.0) Event(const EventHandlerPtr& handler, zeek::Args args, double timestamp = 0.0)
: handler(handler), args(std::move(args)), timestamp(timestamp) {} : handler(handler), args(std::move(args)), timestamp(timestamp) {}
/**
* @return The name of the event.
*/
std::string_view HandlerName() const { return handler->Name(); }
/**
* @return The event's handler.
*/
const EventHandlerPtr& Handler() const { return handler; }
/**
* @return The event's arguments.
*/
const zeek::Args& Args() const { return args; }
/**
* @return The event's arguments.
*/
zeek::Args& Args() { return args; }
/**
* @return The network timestamp metadata of this event or 0.0.
*/
double Timestamp() const { return timestamp; }
private:
EventHandlerPtr handler; EventHandlerPtr handler;
zeek::Args args; zeek::Args args;
double timestamp; // TODO: This should be more generic, possibly holding a double timestamp; // TODO: This should be more generic, possibly holding a
// vector of key/value metadata, rather than just // vector of key/value metadata, rather than just
// the timestamp. // the timestamp.
std::string_view HandlerName() const { return handler->Name(); }
const EventHandlerPtr& Handler() const { return handler; }
}; };
/** /**

View file

@ -22,9 +22,9 @@ using namespace zeek::cluster;
std::optional<broker::zeek::Event> detail::to_broker_event(const detail::Event& ev) { std::optional<broker::zeek::Event> detail::to_broker_event(const detail::Event& ev) {
broker::vector xs; broker::vector xs;
xs.reserve(ev.args.size()); xs.reserve(ev.Args().size());
for ( const auto& a : ev.args ) { for ( const auto& a : ev.Args() ) {
if ( a->GetType() == zeek::BifType::Record::Broker::Data ) { if ( a->GetType() == zeek::BifType::Record::Broker::Data ) {
// When encountering a Broker::Data instance within args, pick out // When encountering a Broker::Data instance within args, pick out
// the broker::data directly to avoid double encoding, Broker::Data. // the broker::data directly to avoid double encoding, Broker::Data.
@ -40,7 +40,7 @@ std::optional<broker::zeek::Event> detail::to_broker_event(const detail::Event&
} }
} }
return broker::zeek::Event(ev.HandlerName(), xs, broker::to_timestamp(ev.timestamp)); return broker::zeek::Event(ev.HandlerName(), xs, broker::to_timestamp(ev.Timestamp()));
} }
std::optional<detail::Event> detail::to_zeek_event(const broker::zeek::Event& ev) { std::optional<detail::Event> detail::to_zeek_event(const broker::zeek::Event& ev) {
@ -188,7 +188,7 @@ TEST_CASE("roundtrip") {
REQUIRE(result); REQUIRE(result);
CHECK_EQ(result->Handler(), handler); CHECK_EQ(result->Handler(), handler);
CHECK_EQ(result->HandlerName(), "Supervisor::node_status"); CHECK_EQ(result->HandlerName(), "Supervisor::node_status");
CHECK_EQ(result->args.size(), 2); CHECK_EQ(result->Args().size(), 2);
} }
SUBCASE("binary") { SUBCASE("binary") {
@ -211,7 +211,7 @@ TEST_CASE("roundtrip") {
REQUIRE(result); REQUIRE(result);
CHECK_EQ(result->Handler(), handler); CHECK_EQ(result->Handler(), handler);
CHECK_EQ(result->HandlerName(), "Supervisor::node_status"); CHECK_EQ(result->HandlerName(), "Supervisor::node_status");
CHECK_EQ(result->args.size(), 2); CHECK_EQ(result->Args().size(), 2);
} }
} }
TEST_SUITE_END(); TEST_SUITE_END();