1616*/
1717#include " collation-manager.hpp"
1818
19- #include " collator-node.hpp"
19+ #include " collator-node/collator-node .hpp"
2020#include " fabric.h"
2121#include " td/utils/Random.h"
2222
@@ -38,18 +38,43 @@ void CollationManager::collate_block(ShardIdFull shard, BlockIdExt min_mastercha
3838 td::Promise<GeneratedCandidate> promise, int proto_version) {
3939 if (shard.is_masterchain ()) {
4040 run_collate_query (
41- shard, min_masterchain_block_id, std::move (prev), creator, std::move (validator_set),
42- opts_->get_collator_options (), manager_, td::Timestamp::in (10.0 ), promise.wrap ([](BlockCandidate&& candidate) {
41+ CollateParams{.shard = shard,
42+ .min_masterchain_block_id = min_masterchain_block_id,
43+ .prev = std::move (prev),
44+ .creator = creator,
45+ .validator_set = std::move (validator_set),
46+ .collator_opts = opts_->get_collator_options ()},
47+ manager_, td::Timestamp::in (10.0 ), std::move (cancellation_token), promise.wrap ([](BlockCandidate&& candidate) {
4348 return GeneratedCandidate{.candidate = std::move (candidate), .is_cached = false , .self_collated = true };
44- }),
45- adnl::AdnlNodeIdShort::zero (), std::move (cancellation_token), 0 );
49+ }));
4650 return ;
4751 }
4852 collate_shard_block (shard, min_masterchain_block_id, std::move (prev), creator, priority, std::move (validator_set),
4953 max_answer_size, std::move (cancellation_token), std::move (promise), td::Timestamp::in (10.0 ),
5054 proto_version);
5155}
5256
57+ void CollationManager::collate_next_block (ShardIdFull shard, BlockIdExt min_masterchain_block_id,
58+ BlockIdExt prev_block_id, td::BufferSlice prev_block,
59+ Ed25519_PublicKey creator, BlockCandidatePriority priority,
60+ td::Ref<ValidatorSet> validator_set, td::uint64 max_answer_size,
61+ td::CancellationToken cancellation_token,
62+ td::Promise<GeneratedCandidate> promise, int proto_version) {
63+ TRY_RESULT_PROMISE (promise, prev_block_data, create_block (prev_block_id, std::move (prev_block)));
64+ run_collate_query (
65+ CollateParams{.shard = shard,
66+ .min_masterchain_block_id = min_masterchain_block_id,
67+ .prev = {prev_block_id},
68+ .creator = creator,
69+ .validator_set = std::move (validator_set),
70+ .collator_opts = opts_->get_collator_options (),
71+ .optimistic_prev_block_ = std::move (prev_block_data)},
72+ manager_, td::Timestamp::in (10.0 ), std::move (cancellation_token), promise.wrap ([](BlockCandidate&& candidate) {
73+ return GeneratedCandidate{.candidate = std::move (candidate), .is_cached = false , .self_collated = true };
74+ }));
75+ // TODO: request to collator node
76+ }
77+
5378void CollationManager::collate_shard_block (ShardIdFull shard, BlockIdExt min_masterchain_block_id,
5479 std::vector<BlockIdExt> prev, Ed25519_PublicKey creator,
5580 BlockCandidatePriority priority, td::Ref<ValidatorSet> validator_set,
@@ -109,11 +134,15 @@ void CollationManager::collate_shard_block(ShardIdFull shard, BlockIdExt min_mas
109134
110135 if (selected_collator.is_zero () && s->self_collate ) {
111136 run_collate_query (
112- shard, min_masterchain_block_id, std::move (prev), creator, std::move (validator_set),
113- opts_->get_collator_options (), manager_, td::Timestamp::in (10.0 ), promise.wrap ([](BlockCandidate&& candidate) {
137+ CollateParams{.shard = shard,
138+ .min_masterchain_block_id = min_masterchain_block_id,
139+ .prev = std::move (prev),
140+ .creator = creator,
141+ .validator_set = std::move (validator_set),
142+ .collator_opts = opts_->get_collator_options ()},
143+ manager_, td::Timestamp::in (10.0 ), std::move (cancellation_token), promise.wrap ([](BlockCandidate&& candidate) {
114144 return GeneratedCandidate{.candidate = std::move (candidate), .is_cached = false , .self_collated = true };
115- }),
116- adnl::AdnlNodeIdShort::zero (), std::move (cancellation_token), 0 );
145+ }));
117146 return ;
118147 }
119148
0 commit comments