mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Merge message dispatch queue (#1030)
* Deferred messages and msg metadata * Store out msg queue size in state * Add checks for queue processing 1. Collator must process at least one message from AccountDispatchQueue (unless block is full) 2. The first message from a transaction is not counted, it cannot be deferred (unless AccountDispatchQueue is not empty) * Return msg metadata from LS in listBlockTransactions[Ext] * Enable new features by capabilities * Changes in deferred messages * Process deferred messages via new_msgs in collator * Rework setting deferred_lt, bring back check_message_processing_order, check order of deferred_lt in validator * Use have_unprocessed_account_dispatch_queue_ in collator * Fix setting transaction lt for deferred messages * Fix lite-client compilation error * Changes in process_dispatch_queue, rename deferred_lt -> emitted_lt * Fix compilation error * Use uint64 for msg queue size * Add liteServer.getBlockOutMsgQueueSize * Fix compilation error * Fix typos in comments --------- Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
parent
38fc1d5456
commit
0daee1d887
29 changed files with 1889 additions and 318 deletions
|
@ -26,7 +26,7 @@ class QueueSizeCounter : public td::actor::Actor {
|
|||
}
|
||||
|
||||
void start_up() override;
|
||||
void get_queue_size(BlockIdExt block_id, td::Promise<td::uint32> promise);
|
||||
void get_queue_size(BlockIdExt block_id, td::Promise<td::uint64> promise);
|
||||
void alarm() override;
|
||||
|
||||
private:
|
||||
|
@ -42,14 +42,14 @@ class QueueSizeCounter : public td::actor::Actor {
|
|||
bool started_ = false;
|
||||
bool done_ = false;
|
||||
bool calc_whole_ = false;
|
||||
td::uint32 queue_size_ = 0;
|
||||
std::vector<td::Promise<td::uint32>> promises_;
|
||||
td::uint64 queue_size_ = 0;
|
||||
std::vector<td::Promise<td::uint64>> promises_;
|
||||
};
|
||||
std::map<BlockIdExt, Entry> results_;
|
||||
|
||||
void get_queue_size_ex(BlockIdExt block_id, bool calc_whole, td::Promise<td::uint32> promise);
|
||||
void get_queue_size_ex(BlockIdExt block_id, bool calc_whole, td::Promise<td::uint64> promise);
|
||||
void get_queue_size_cont(BlockHandle handle, td::Ref<ShardState> state);
|
||||
void get_queue_size_cont2(td::Ref<ShardState> state, td::Ref<ShardState> prev_state, td::uint32 prev_size);
|
||||
void get_queue_size_cont2(td::Ref<ShardState> state, td::Ref<ShardState> prev_state, td::uint64 prev_size);
|
||||
void on_error(BlockIdExt block_id, td::Status error);
|
||||
|
||||
void process_top_shard_blocks();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue