@@ -17,26 +17,31 @@ Provider::Provider(const tl::engine& engine, ssg_group_id_t gid, bool must_join,
1717 uint16_t provider_id, const std::string& config, const tl::pool& p)
1818: self(std::make_shared<ProviderImpl>(engine, gid, must_join, mona, provider_id, p)) {
1919 self->get_engine ().push_finalize_callback (this , [p=this ]() { p->self .reset (); });
20+ self->get_engine ().push_prefinalize_callback (this , [p=this ]() { p->self ->onPreFinalize (); });
2021 self->processConfig (config);
2122}
2223
2324Provider::Provider (margo_instance_id mid, ssg_group_id_t gid, bool must_join, mona_instance_t mona,
2425 uint16_t provider_id, const std::string& config, const tl::pool& p)
2526: self(std::make_shared<ProviderImpl>(mid, gid, must_join, mona, provider_id, p)) {
2627 self->get_engine ().push_finalize_callback (this , [p=this ]() { p->self .reset (); });
28+ self->get_engine ().push_prefinalize_callback (this , [p=this ]() { p->self ->onPreFinalize (); });
2729 self->processConfig (config);
2830}
2931
3032Provider::Provider (Provider&& other) {
3133 if (!other.self ) return ;
3234 other.self ->get_engine ().pop_finalize_callback (this );
35+ other.self ->get_engine ().pop_prefinalize_callback (this );
3336 self = std::move (other.self );
3437 self->get_engine ().push_finalize_callback (this , [p=this ]() { p->self .reset (); });
38+ self->get_engine ().push_prefinalize_callback (this , [p=this ]() { p->self ->onPreFinalize (); });
3539}
3640
3741Provider::~Provider () {
3842 if (self) {
3943 self->get_engine ().pop_finalize_callback (this );
44+ self->get_engine ().pop_prefinalize_callback (this );
4045 }
4146 spdlog::trace (" Colza provider destroyed" );
4247}
0 commit comments