Event: Use IntrusivePtr to manage obj refcount

Fly-by cleanup.
This commit is contained in:
Arne Welzel 2025-05-22 17:00:38 +02:00
parent e4e9ec3e80
commit 89402fcc1b
2 changed files with 7 additions and 14 deletions

View file

@ -46,12 +46,9 @@ Event::Event(const EventHandlerPtr& arg_handler, zeek::Args arg_args, util::deta
args(std::move(arg_args)), args(std::move(arg_args)),
src(arg_src), src(arg_src),
aid(arg_aid), aid(arg_aid),
obj(arg_obj), obj(zeek::NewRef{}, arg_obj),
next_event(nullptr), next_event(nullptr),
meta(detail::MakeEventMetadataVector(arg_ts)) { meta(detail::MakeEventMetadataVector(arg_ts)) {}
if ( obj )
Ref(obj);
}
Event::Event(detail::EventMetadataVectorPtr arg_meta, const EventHandlerPtr& arg_handler, zeek::Args arg_args, Event::Event(detail::EventMetadataVectorPtr arg_meta, const EventHandlerPtr& arg_handler, zeek::Args arg_args,
util::detail::SourceID arg_src, analyzer::ID arg_aid, Obj* arg_obj) util::detail::SourceID arg_src, analyzer::ID arg_aid, Obj* arg_obj)
@ -59,12 +56,9 @@ Event::Event(detail::EventMetadataVectorPtr arg_meta, const EventHandlerPtr& arg
args(std::move(arg_args)), args(std::move(arg_args)),
src(arg_src), src(arg_src),
aid(arg_aid), aid(arg_aid),
obj(arg_obj), obj(zeek::NewRef{}, arg_obj),
next_event(nullptr), next_event(nullptr),
meta(std::move(arg_meta)) { meta(std::move(arg_meta)) {}
if ( obj )
Ref(obj);
}
zeek::VectorValPtr Event::MetadataValues(const EnumValPtr& id) const { zeek::VectorValPtr Event::MetadataValues(const EnumValPtr& id) const {
static const auto& any_vec_t = zeek::id::find_type<zeek::VectorType>("any_vec"); static const auto& any_vec_t = zeek::id::find_type<zeek::VectorType>("any_vec");
@ -151,9 +145,8 @@ void Event::Dispatch(bool no_remote) {
// Already reported. // Already reported.
} }
if ( obj ) // Unref obj
// obj->EventDone(); obj.reset();
Unref(obj);
if ( handler->ErrorHandler() ) if ( handler->ErrorHandler() )
reporter->EndErrorHandler(); reporter->EndErrorHandler();

View file

@ -95,7 +95,7 @@ private:
zeek::Args args; zeek::Args args;
util::detail::SourceID src; util::detail::SourceID src;
analyzer::ID aid; analyzer::ID aid;
Obj* obj; zeek::IntrusivePtr<Obj> obj;
Event* next_event; Event* next_event;
detail::EventMetadataVectorPtr meta; detail::EventMetadataVectorPtr meta;
}; };