mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Add getConfigParam to tonlibjson
This commit is contained in:
parent
76c2764e7f
commit
45a160d7c1
6 changed files with 37 additions and 18 deletions
|
@ -39,7 +39,7 @@ td::StringBuilder& operator<<(td::StringBuilder& sb, const LastConfigState& stat
|
|||
return sb;
|
||||
}
|
||||
|
||||
LastConfig::LastConfig(ExtClientRef client, td::unique_ptr<Callback> callback) : callback_(std::move(callback)) {
|
||||
LastConfig::LastConfig(ExtClientRef client) {
|
||||
client_.set_client(client);
|
||||
VLOG(last_block) << "State: " << state_;
|
||||
}
|
||||
|
|
|
@ -36,17 +36,10 @@ td::StringBuilder& operator<<(td::StringBuilder& sb, const LastConfigState& stat
|
|||
|
||||
class LastConfig : public td::actor::Actor {
|
||||
public:
|
||||
class Callback {
|
||||
public:
|
||||
virtual ~Callback() {
|
||||
}
|
||||
};
|
||||
|
||||
explicit LastConfig(ExtClientRef client, td::unique_ptr<Callback> callback);
|
||||
explicit LastConfig(ExtClientRef client);
|
||||
void get_last_config(td::Promise<LastConfigState> promise);
|
||||
|
||||
private:
|
||||
td::unique_ptr<Callback> callback_;
|
||||
ExtClient client_;
|
||||
LastConfigState state_;
|
||||
|
||||
|
|
|
@ -1439,17 +1439,9 @@ void TonlibClient::init_last_block(LastBlockState state) {
|
|||
}
|
||||
void TonlibClient::init_last_config() {
|
||||
ref_cnt_++;
|
||||
class Callback : public LastConfig::Callback {
|
||||
public:
|
||||
Callback(td::actor::ActorShared<TonlibClient> client) : client_(std::move(client)) {
|
||||
}
|
||||
|
||||
private:
|
||||
td::actor::ActorShared<TonlibClient> client_;
|
||||
};
|
||||
raw_last_config_ =
|
||||
td::actor::create_actor<LastConfig>(td::actor::ActorOptions().with_name("LastConfig").with_poll(false),
|
||||
get_client_ref(), td::make_unique<Callback>(td::actor::actor_shared(this)));
|
||||
get_client_ref());
|
||||
}
|
||||
|
||||
void TonlibClient::on_result(td::uint64 id, tonlib_api::object_ptr<tonlib_api::Object> response) {
|
||||
|
@ -4198,6 +4190,32 @@ auto to_lite_api(const tonlib_api::ton_blockIdExt& blk) -> td::Result<lite_api_p
|
|||
blk.workchain_, blk.shard_, blk.seqno_, root_hash, file_hash);
|
||||
}
|
||||
|
||||
td::Status TonlibClient::do_request(const tonlib_api::getConfigParam& request,
|
||||
td::Promise<object_ptr<tonlib_api::configInfo>>&& promise) {
|
||||
TRY_RESULT(lite_block, to_lite_api(*request.id_))
|
||||
auto block = create_block_id(std::move(lite_block));
|
||||
auto param = request.param_;
|
||||
std::vector<int32_t> params = { param };
|
||||
|
||||
client_.send_query(ton::lite_api::liteServer_getConfigParams(0, std::move(lite_block), std::move(params)),
|
||||
promise.wrap([block, param](auto r_config) {
|
||||
auto state = block::check_extract_state_proof(block, r_config->state_proof_.as_slice(),
|
||||
r_config->config_proof_.as_slice());
|
||||
if (state.is_error()) {
|
||||
LOG(ERROR) << "block::check_extract_state_proof failed: " << state.error();
|
||||
}
|
||||
auto config = block::Config::extract_from_state(std::move(state.move_as_ok()), 0);
|
||||
if (config.is_error()) {
|
||||
LOG(ERROR) << "block::Config::extract_from_state failed: " << config.error();
|
||||
}
|
||||
tonlib_api::configInfo config_result;
|
||||
config_result.config_ = tonlib_api::make_object<tonlib_api::tvm_cell>(to_bytes(config.move_as_ok()->get_config_param(param)));
|
||||
return tonlib_api::make_object<tonlib_api::configInfo>(std::move(config_result));
|
||||
}));
|
||||
|
||||
return td::Status::OK();
|
||||
}
|
||||
|
||||
td::Status TonlibClient::do_request(const tonlib_api::blocks_getMasterchainInfo& masterchain_info,
|
||||
td::Promise<object_ptr<tonlib_api::blocks_masterchainInfo>>&& promise) {
|
||||
client_.send_query(ton::lite_api::liteServer_getMasterchainInfo(),
|
||||
|
|
|
@ -357,6 +357,9 @@ class TonlibClient : public td::actor::Actor {
|
|||
td::Status do_request(const tonlib_api::blocks_getBlockHeader& request,
|
||||
td::Promise<object_ptr<tonlib_api::blocks_header>>&& promise);
|
||||
|
||||
td::Status do_request(const tonlib_api::getConfigParam& request,
|
||||
td::Promise<object_ptr<tonlib_api::configInfo>>&& promise);
|
||||
|
||||
void proxy_request(td::int64 query_id, std::string data);
|
||||
|
||||
void load_libs_from_disk();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue