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
				
			
		| 
						 | 
				
			
			@ -3492,7 +3492,7 @@ void ValidatorEngine::run_control_query(ton::ton_api::engine_validator_getShardO
 | 
			
		|||
        if (!dest) {
 | 
			
		||||
          td::actor::send_closure(
 | 
			
		||||
              manager, &ton::validator::ValidatorManagerInterface::get_out_msg_queue_size, handle->id(),
 | 
			
		||||
              [promise = std::move(promise)](td::Result<td::uint32> R) mutable {
 | 
			
		||||
              [promise = std::move(promise)](td::Result<td::uint64> R) mutable {
 | 
			
		||||
                if (R.is_error()) {
 | 
			
		||||
                  promise.set_value(create_control_query_error(R.move_as_error_prefix("failed to get queue size: ")));
 | 
			
		||||
                } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue