14 #include <unordered_set> 22 class YacCryptoProvider;
31 static std::shared_ptr<Yac>
create(
33 std::shared_ptr<YacNetwork> network,
34 std::shared_ptr<YacCryptoProvider> crypto,
35 std::shared_ptr<Timer> timer,
41 std::shared_ptr<YacNetwork> network,
42 std::shared_ptr<YacCryptoProvider> crypto,
43 std::shared_ptr<Timer> timer,
52 std::optional<ClusterOrdering> alternative_order =
53 std::nullopt)
override;
61 std::optional<Answer>
onState(std::vector<VoteMessage> state)
override;
74 uint32_t attempt = 0);
84 std::optional<std::shared_ptr<shared_model::interface::Peer>> findPeer(
88 void removeUnknownPeersVotes(
89 std::vector<VoteMessage> &votes,
93 std::optional<Answer> applyState(
const std::vector<VoteMessage> &state);
96 void propagateState(
const std::vector<VoteMessage> &msg);
98 const std::vector<VoteMessage> &msg);
99 void tryPropagateBack(
const std::vector<VoteMessage> &state);
106 std::optional<shared_model::interface::types::PeerList> alternative_order_;
111 std::shared_ptr<YacNetwork> network_;
112 std::shared_ptr<YacCryptoProvider> crypto_;
113 std::shared_ptr<Timer> timer_;
114 std::map<Round, std::unordered_set<VoteMessage>> future_states_;
118 #endif // IROHA_YAC_HPP std::optional< Answer > processRoundSwitch(consensus::Round const &round, shared_model::interface::types::PeerList const &peers) override
Definition: yac.cpp:59
Definition: cluster_order.hpp:20
Definition: yac_hash_provider.hpp:25
void vote(YacHash hash, ClusterOrdering order, std::optional< ClusterOrdering > alternative_order=std::nullopt) override
Definition: yac.cpp:83
std::shared_ptr< Logger > LoggerPtr
Definition: logger_fwd.hpp:22
Definition: yac_gate.hpp:28
Definition: yac_vote_storage.hpp:60
static std::shared_ptr< Yac > create(YacVoteStorage vote_storage, std::shared_ptr< YacNetwork > network, std::shared_ptr< YacCryptoProvider > crypto, std::shared_ptr< Timer > timer, shared_model::interface::types::PeerList order, Round round, logger::LoggerPtr log)
Definition: yac.cpp:29
hash256_t hash(const T &pb)
Definition: pb_common.hpp:43
void stop() override
Prevent any new outgoing network activity. Be passive.
Definition: yac.cpp:55
Yac(YacVoteStorage vote_storage, std::shared_ptr< YacNetwork > network, std::shared_ptr< YacCryptoProvider > crypto, std::shared_ptr< Timer > timer, shared_model::interface::types::PeerList order, Round round, logger::LoggerPtr log)
Definition: yac.cpp:40
Definition: vote_message.hpp:20
std::vector< std::shared_ptr< shared_model::interface::Peer > > PeerList
Type of peers collection.
Definition: types.hpp:95
std::optional< Answer > onState(std::vector< VoteMessage > state) override
Definition: yac.cpp:135
Definition: yac_network_interface.hpp:22
Definition: cluster_order.hpp:16