1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00

Get neighbors' msg queues from other nodes

This commit is contained in:
SpyCheese 2022-08-01 17:48:22 +03:00
parent 1869a25062
commit e43e235143
22 changed files with 658 additions and 68 deletions

View file

@ -183,6 +183,8 @@ class ValidatorManagerImpl : public ValidatorManager {
};
std::map<BlockIdExt, WaitList<WaitBlockState, td::Ref<ShardState>>> wait_state_;
std::map<BlockIdExt, WaitList<WaitBlockData, td::Ref<BlockData>>> wait_block_data_;
std::map<std::pair<BlockIdExt, ShardIdFull>, WaitList<WaitOutMsgQueueProof, td::Ref<OutMsgQueueProof>>>
wait_out_msg_queue_proof_;
struct WaitBlockHandle {
std::vector<td::Promise<BlockHandle>> waiting_;
@ -357,6 +359,8 @@ class ValidatorManagerImpl : public ValidatorManager {
td::Promise<td::Ref<ShardState>> promise) override;
void wait_block_state_short(BlockIdExt block_id, td::uint32 priority, td::Timestamp timeout,
td::Promise<td::Ref<ShardState>> promise) override;
void wait_out_msg_queue_proof(BlockIdExt block_id, ShardIdFull dst_shard, td::uint32 priority, td::Timestamp timeout,
td::Promise<td::Ref<OutMsgQueueProof>> promise) override;
void set_block_data(BlockHandle handle, td::Ref<BlockData> data, td::Promise<td::Unit> promise) override;
void wait_block_data(BlockHandle handle, td::uint32 priority, td::Timestamp,
@ -444,6 +448,8 @@ class ValidatorManagerImpl : public ValidatorManager {
void send_ihr_message(td::Ref<IhrMessage> message) override;
void send_top_shard_block_description(td::Ref<ShardTopBlockDescription> desc) override;
void send_block_broadcast(BlockBroadcast broadcast) override;
void send_get_out_msg_queue_proof_request(BlockIdExt id, ShardIdFull dst_shard, td::uint32 priority,
td::Promise<td::Ref<OutMsgQueueProof>> promise) override;
void update_shard_client_state(BlockIdExt masterchain_block_id, td::Promise<td::Unit> promise) override;
void get_shard_client_state(bool from_db, td::Promise<BlockIdExt> promise) override;
@ -478,6 +484,7 @@ class ValidatorManagerImpl : public ValidatorManager {
void finished_wait_state(BlockHandle handle, td::Result<td::Ref<ShardState>> R);
void finished_wait_data(BlockHandle handle, td::Result<td::Ref<BlockData>> R);
void finished_wait_msg_queue(BlockIdExt block_id, ShardIdFull dst_shard, td::Result<td::Ref<OutMsgQueueProof>> R);
void start_up() override;
void started(ValidatorManagerInitResult result);