15 #include <boost/optional.hpp> 16 #include <rxcpp/rx-lite.hpp> 22 #include <rxcpp/operators/rx-observe_on.hpp> 28 class YacCryptoProvider;
37 static std::shared_ptr<Yac>
create(
39 std::shared_ptr<YacNetwork> network,
40 std::shared_ptr<YacCryptoProvider> crypto,
41 std::shared_ptr<Timer> timer,
44 rxcpp::observe_on_one_worker worker,
48 std::shared_ptr<YacNetwork> network,
49 std::shared_ptr<YacCryptoProvider> crypto,
50 std::shared_ptr<Timer> timer,
53 rxcpp::observe_on_one_worker worker,
62 boost::optional<ClusterOrdering> alternative_order =
63 boost::none)
override;
65 rxcpp::observable<Answer>
onOutcome()
override;
69 void onState(std::vector<VoteMessage> state)
override;
95 boost::optional<std::shared_ptr<shared_model::interface::Peer>>
99 void removeUnknownPeersVotes(std::vector<VoteMessage> &votes,
107 void applyState(
const std::vector<VoteMessage> &state,
108 std::unique_lock<std::mutex> &lock);
111 void propagateState(
const std::vector<VoteMessage> &msg);
113 const std::vector<VoteMessage> &msg);
114 void tryPropagateBack(
const std::vector<VoteMessage> &state);
123 boost::optional<ClusterOrdering> alternative_order_;
127 rxcpp::observe_on_one_worker worker_;
128 rxcpp::composite_subscription notifier_lifetime_;
129 rxcpp::subjects::synchronize<Answer, decltype(worker_)> notifier_;
131 std::shared_ptr<YacNetwork> network_;
132 std::shared_ptr<YacCryptoProvider> crypto_;
133 std::shared_ptr<Timer> timer_;
139 #endif // IROHA_YAC_HPP ~Yac() override
Definition: yac.cpp:68
Definition: cluster_order.hpp:23
static std::shared_ptr< Yac > create(YacVoteStorage vote_storage, std::shared_ptr< YacNetwork > network, std::shared_ptr< YacCryptoProvider > crypto, std::shared_ptr< Timer > timer, ClusterOrdering order, Round round, rxcpp::observe_on_one_worker worker, logger::LoggerPtr log)
Definition: yac.cpp:31
Definition: yac_hash_provider.hpp:30
std::shared_ptr< Logger > LoggerPtr
Definition: logger_fwd.hpp:22
Definition: yac_gate.hpp:26
Definition: yac_vote_storage.hpp:63
Yac(YacVoteStorage vote_storage, std::shared_ptr< YacNetwork > network, std::shared_ptr< YacCryptoProvider > crypto, std::shared_ptr< Timer > timer, ClusterOrdering order, Round round, rxcpp::observe_on_one_worker worker, logger::LoggerPtr log)
Definition: yac.cpp:50
Definition: block_query.hpp:15
hash256_t hash(const T &pb)
Definition: pb_common.hpp:43
rxcpp::observable< Answer > onOutcome() override
Definition: yac.cpp:99
void vote(YacHash hash, ClusterOrdering order, boost::optional< ClusterOrdering > alternative_order=boost::none) override
Definition: yac.cpp:78
void stop() override
Prevent any new outgoing network activity. Be passive.
Definition: yac.cpp:72
void onState(std::vector< VoteMessage > state) override
Definition: yac.cpp:134
Definition: vote_message.hpp:22
Definition: yac_network_interface.hpp:24