diff --git a/tonlib/tonlib/LastConfig.cpp b/tonlib/tonlib/LastConfig.cpp index 5ee73212..0111095b 100644 --- a/tonlib/tonlib/LastConfig.cpp +++ b/tonlib/tonlib/LastConfig.cpp @@ -39,7 +39,7 @@ td::StringBuilder& operator<<(td::StringBuilder& sb, const LastConfigState& stat return sb; } -LastConfig::LastConfig(ExtClientRef client) { +LastConfig::LastConfig(ExtClientRef client, td::unique_ptr callback) : callback_(std::move(callback)) { client_.set_client(client); VLOG(last_block) << "State: " << state_; } diff --git a/tonlib/tonlib/LastConfig.h b/tonlib/tonlib/LastConfig.h index d610165d..514b4a59 100644 --- a/tonlib/tonlib/LastConfig.h +++ b/tonlib/tonlib/LastConfig.h @@ -36,10 +36,17 @@ td::StringBuilder& operator<<(td::StringBuilder& sb, const LastConfigState& stat class LastConfig : public td::actor::Actor { public: - explicit LastConfig(ExtClientRef client); + class Callback { + public: + virtual ~Callback() { + } + }; + + explicit LastConfig(ExtClientRef client, td::unique_ptr callback); void get_last_config(td::Promise promise); private: + td::unique_ptr callback_; ExtClient client_; LastConfigState state_; diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 8bcf53c9..2696bb1a 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -1439,9 +1439,17 @@ void TonlibClient::init_last_block(LastBlockState state) { } void TonlibClient::init_last_config() { ref_cnt_++; + class Callback : public LastConfig::Callback { + public: + Callback(td::actor::ActorShared client) : client_(std::move(client)) { + } + + private: + td::actor::ActorShared client_; + }; raw_last_config_ = td::actor::create_actor(td::actor::ActorOptions().with_name("LastConfig").with_poll(false), - get_client_ref()); + get_client_ref(), td::make_unique(td::actor::actor_shared(this))); } void TonlibClient::on_result(td::uint64 id, tonlib_api::object_ptr response) {