Skip to content

Commit a12b5b9

Browse files
committed
added pre-finalize callback
1 parent f241348 commit a12b5b9

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/Provider.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2324
Provider::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

3032
Provider::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

3741
Provider::~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
}

src/ProviderImpl.hpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ class ProviderImpl : public tl::provider<ProviderImpl> {
151151
spdlog::trace("[colza:{0}] Registered provider with id {0}", id());
152152
}
153153

154-
~ProviderImpl() {
155-
spdlog::trace("[colza:{}] Deregistering provider", id());
154+
void onPreFinalize() {
155+
spdlog::trace("[colza:{}] Pre-finalizing provider", id());
156156
m_create_pipeline.deregister();
157157
m_destroy_pipeline.deregister();
158158
m_check_pipeline.deregister();
@@ -174,6 +174,10 @@ class ProviderImpl : public tl::provider<ProviderImpl> {
174174
spdlog::trace("[colza:{}] => done!", id());
175175
}
176176

177+
~ProviderImpl() {
178+
spdlog::trace("[colza:{}] Deregistering provider", id());
179+
}
180+
177181
void processConfig(const std::string& config) {
178182
spdlog::trace("[colza:{}] Processing Colza configuration", id());
179183
if(config.empty()) {

0 commit comments

Comments
 (0)