hyperledger/iroha
Iroha - A simple, decentralized ledger http://iroha.tech
cluster_order.hpp
Go to the documentation of this file.
1 
6 #ifndef IROHA_CLUSTER_ORDER_HPP
7 #define IROHA_CLUSTER_ORDER_HPP
8 
9 #include <memory>
10 #include <vector>
11 
12 #include <boost/optional.hpp>
15 
16 namespace iroha {
17  namespace consensus {
18  namespace yac {
19 
24  public:
31  static boost::optional<ClusterOrdering> create(
32  std::vector<std::shared_ptr<shared_model::interface::Peer>> const
33  &order,
34  std::vector<size_t> const &peer_positions);
35 
41  static boost::optional<ClusterOrdering> create(
42  std::vector<std::shared_ptr<shared_model::interface::Peer>> const
43  &order);
44 
49 
55 
59  bool hasNext() const;
60 
62 
64 
65  virtual ~ClusterOrdering() = default;
66 
67  ClusterOrdering() = delete;
68 
69  private:
70  // prohibit creation of the object not from create method
71  explicit ClusterOrdering(
72  std::vector<std::shared_ptr<shared_model::interface::Peer>> const
73  &order,
74  std::vector<size_t> const &peer_positions);
75 
76  explicit ClusterOrdering(
77  std::vector<std::shared_ptr<shared_model::interface::Peer>> const
78  &order);
79 
80  std::vector<std::shared_ptr<shared_model::interface::Peer>> order_;
81  PeersNumberType index_ = 0;
82  };
83  } // namespace yac
84  } // namespace consensus
85 } // namespace iroha
86 #endif // IROHA_CLUSTER_ORDER_HPP
ClusterOrdering & switchToNext()
Definition: cluster_order.cpp:62
PeersNumberType getNumberOfPeers() const
Definition: cluster_order.cpp:72
Definition: cluster_order.hpp:23
Definition: peer.hpp:20
static boost::optional< ClusterOrdering > create(std::vector< std::shared_ptr< shared_model::interface::Peer >> const &order, std::vector< size_t > const &peer_positions)
Definition: cluster_order.cpp:12
Definition: block_query.hpp:15
size_t PeersNumberType
Type for number of peers in round.
Definition: yac_types.hpp:16
bool hasNext() const
Definition: cluster_order.cpp:58
const shared_model::interface::types::PeerList & getPeers() const
Definition: cluster_order.cpp:68
std::vector< std::shared_ptr< shared_model::interface::Peer > > PeerList
Type of peers collection.
Definition: types.hpp:93
const shared_model::interface::Peer & currentLeader()
Definition: cluster_order.cpp:51