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
|
@ -66,6 +66,12 @@ class optional {
|
|||
DCHECK(*this);
|
||||
return impl_.ok_ref();
|
||||
}
|
||||
T &value_force() {
|
||||
if (!*this) {
|
||||
*this = T();
|
||||
}
|
||||
return value();
|
||||
}
|
||||
T &operator*() {
|
||||
return value();
|
||||
}
|
||||
|
@ -88,6 +94,14 @@ class optional {
|
|||
impl_.emplace(std::forward<ArgsT>(args)...);
|
||||
}
|
||||
|
||||
bool operator==(const optional& other) const {
|
||||
return (bool)*this == (bool)other && (!(bool)*this || value() == other.value());
|
||||
}
|
||||
|
||||
bool operator!=(const optional& other) const {
|
||||
return !(*this == other);
|
||||
}
|
||||
|
||||
private:
|
||||
Result<T> impl_;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue