Scorum
registration_committee.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 #include <set>
5 #include <functional>
6 
8 
10 
11 namespace scorum {
12 namespace chain {
13 
14 class registration_committee_member_object;
15 
17 {
18  using committee_member_object_cref_type = std::reference_wrapper<const registration_committee_member_object>;
19  using committee_members_cref_type = std::vector<committee_member_object_cref_type>;
20 
22 
24 
25  virtual committee_members_cref_type create_committee(const std::vector<account_name_type>& accounts) = 0;
26 
29  const member_info_modifier_type& modifier)
30  = 0;
31 };
32 
34 {
35  friend class dbservice_dbs_factory;
36 
37 protected:
39 
40 public:
42 
44 
45  committee_members_cref_type create_committee(const std::vector<account_name_type>& accounts) override;
46 
49  const member_info_modifier_type& modifier) override;
50 
51  size_t get_members_count() const override;
52 
53  void add_member(const account_name_type&) override;
54  void exclude_member(const account_name_type&) override;
55 
56  void change_add_member_quorum(const percent_type quorum) override;
57  void change_exclude_member_quorum(const percent_type quorum) override;
58  void change_base_quorum(const percent_type quorum) override;
59 
62  percent_type get_base_quorum() override;
63 
64  bool is_exists(const account_name_type&) const override;
65 
66 private:
67  const registration_committee_member_object& _add_member(const account_object&);
68 
69  void _exclude_member(const account_object&);
70 
71  account_service_i& _account_svc;
72  registration_pool_service_i& _reg_pool_svc;
73 };
74 
75 namespace utils {
76 bool is_quorum(size_t votes, size_t members_count, size_t quorum);
77 } // namespace utils
78 
79 } // namespace chain
80 } // namespace scorum
tracks the blockchain state in an extensible manner
Definition: database.hpp:52
void change_base_quorum(const percent_type quorum) override
void change_exclude_member_quorum(const percent_type quorum) override
committee_members_cref_type get_committee() const override
committee_members_cref_type create_committee(const std::vector< account_name_type > &accounts) override
void update_member_info(const registration_committee_member_object &, const member_info_modifier_type &modifier) override
bool is_exists(const account_name_type &) const override
const registration_committee_member_object & get_member(const account_name_type &) const override
void add_member(const account_name_type &) override
void change_add_member_quorum(const percent_type quorum) override
void exclude_member(const account_name_type &) override
bool is_quorum(size_t votes, size_t members_count, size_t quorum)
fc::fixed_string_16 account_name_type
Definition: types.hpp:62
uint16_t percent_type
Definition: types.hpp:69
Definition: asset.cpp:15
std::function< void(registration_committee_member_object &)> member_info_modifier_type
std::vector< committee_member_object_cref_type > committee_members_cref_type
virtual committee_members_cref_type get_committee() const =0
virtual committee_members_cref_type create_committee(const std::vector< account_name_type > &accounts)=0
std::reference_wrapper< const registration_committee_member_object > committee_member_object_cref_type
virtual const registration_committee_member_object & get_member(const account_name_type &) const =0
virtual void update_member_info(const registration_committee_member_object &, const member_info_modifier_type &modifier)=0