mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Initial commit of block generator for fisherman testing
This commit is contained in:
parent
ea0dc16163
commit
383a0c574a
14 changed files with 523 additions and 2 deletions
50
test/fisherman/block_reader.cpp
Normal file
50
test/fisherman/block_reader.cpp
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#include "block_reader.hpp"
|
||||
|
||||
namespace test::fisherman {
|
||||
|
||||
BlockDataLoader::BlockDataLoader(const std::string &db_path) : scheduler_({1}) {
|
||||
auto opts = ton::validator::ValidatorManagerOptions::create(ton::BlockIdExt{}, ton::BlockIdExt{});
|
||||
scheduler_.run_in_context([&] {
|
||||
root_db_actor_ = td::actor::create_actor<ton::validator::RootDb>(
|
||||
"RootDbActor", td::actor::ActorId<ton::validator::ValidatorManager>(), db_path, opts);
|
||||
});
|
||||
}
|
||||
|
||||
BlockDataLoader::~BlockDataLoader() {
|
||||
scheduler_.stop();
|
||||
}
|
||||
|
||||
td::Result<td::Ref<ton::validator::BlockData>> BlockDataLoader::load_block_data(const ton::BlockIdExt &block_id) {
|
||||
std::atomic<bool> done{false};
|
||||
td::Result<td::Ref<ton::validator::BlockData>> block_data_result;
|
||||
|
||||
scheduler_.run_in_context([&] {
|
||||
auto handle_promise = td::PromiseCreator::lambda([&](td::Result<ton::validator::ConstBlockHandle> handle_res) {
|
||||
if (handle_res.is_error()) {
|
||||
block_data_result = td::Result<td::Ref<ton::validator::BlockData>>(handle_res.move_as_error());
|
||||
done = true;
|
||||
return;
|
||||
}
|
||||
auto handle = handle_res.move_as_ok();
|
||||
|
||||
auto data_promise = td::PromiseCreator::lambda([&](td::Result<td::Ref<ton::validator::BlockData>> data_res) {
|
||||
block_data_result = std::move(data_res);
|
||||
done = true;
|
||||
});
|
||||
|
||||
td::actor::send_closure(root_db_actor_, &ton::validator::RootDb::get_block_data, handle, std::move(data_promise));
|
||||
});
|
||||
|
||||
td::actor::send_closure(root_db_actor_, &ton::validator::RootDb::get_block_by_seqno,
|
||||
ton::AccountIdPrefixFull{block_id.id.workchain, block_id.id.shard}, block_id.id.seqno,
|
||||
std::move(handle_promise));
|
||||
});
|
||||
|
||||
while (!done) {
|
||||
scheduler_.run(1);
|
||||
}
|
||||
|
||||
return block_data_result;
|
||||
}
|
||||
|
||||
} // namespace test::fisherman
|
||||
Loading…
Add table
Add a link
Reference in a new issue