diff --git a/src/cluster/Backend.cc b/src/cluster/Backend.cc index 5729755437..202b38fd46 100644 --- a/src/cluster/Backend.cc +++ b/src/cluster/Backend.cc @@ -19,7 +19,7 @@ using namespace zeek::cluster; 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; } diff --git a/src/cluster/Backend.h b/src/cluster/Backend.h index 0709cd10ba..3f27c293a7 100644 --- a/src/cluster/Backend.h +++ b/src/cluster/Backend.h @@ -45,14 +45,36 @@ public: Event(const EventHandlerPtr& handler, zeek::Args args, double timestamp = 0.0) : 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; zeek::Args args; double timestamp; // TODO: This should be more generic, possibly holding a // vector of key/value metadata, rather than just // the timestamp. - - std::string_view HandlerName() const { return handler->Name(); } - const EventHandlerPtr& Handler() const { return handler; } }; /** diff --git a/src/cluster/serializer/broker/Serializer.cc b/src/cluster/serializer/broker/Serializer.cc index f2308cb627..5bd32f8738 100644 --- a/src/cluster/serializer/broker/Serializer.cc +++ b/src/cluster/serializer/broker/Serializer.cc @@ -22,9 +22,9 @@ using namespace zeek::cluster; std::optional detail::to_broker_event(const detail::Event& ev) { 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 ) { // When encountering a Broker::Data instance within args, pick out // the broker::data directly to avoid double encoding, Broker::Data. @@ -40,7 +40,7 @@ std::optional 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::to_zeek_event(const broker::zeek::Event& ev) { @@ -188,7 +188,7 @@ TEST_CASE("roundtrip") { REQUIRE(result); CHECK_EQ(result->Handler(), handler); CHECK_EQ(result->HandlerName(), "Supervisor::node_status"); - CHECK_EQ(result->args.size(), 2); + CHECK_EQ(result->Args().size(), 2); } SUBCASE("binary") { @@ -211,7 +211,7 @@ TEST_CASE("roundtrip") { REQUIRE(result); CHECK_EQ(result->Handler(), handler); CHECK_EQ(result->HandlerName(), "Supervisor::node_status"); - CHECK_EQ(result->args.size(), 2); + CHECK_EQ(result->Args().size(), 2); } } TEST_SUITE_END();