9 class config_view_change {
11 virtual void commit_change(unsigned view_id) = 0;
12 virtual ~config_view_change() {};
15 class config : public paxos_change {
17 acceptor *paxos_acceptor;
18 proposer *paxos_proposer;
22 config_view_change *vc;
23 std::vector<std::string> mems;
25 std::condition_variable config_cond;
26 paxos_protocol::status heartbeat(int &r, std::string m, unsigned instance);
27 std::string value(const std::vector<std::string> &mems) const;
28 void members(const std::string &v, std::vector<std::string> &m) const;
29 void get_view_wo(unsigned instance, std::vector<std::string> &m);
30 bool remove(const std::string &);
33 OK, // response and same view #
34 VIEWERR, // response but different view #
35 FAILURE, // no response
37 heartbeat_t doheartbeat(const std::string &m);
39 config(const std::string &_first,
40 const std::string &_me,
41 config_view_change *_vc);
42 unsigned view_id() { return my_view_id; }
43 const std::string &myaddr() const { return me; };
44 std::string dump() { return paxos_acceptor->dump(); };
45 void get_view(unsigned instance, std::vector<std::string> &m);
46 void restore(const std::string &s);
47 bool add(const std::string &, unsigned view_id);
48 bool ismember(const std::string &m, unsigned view_id);
49 void heartbeater(void);
50 void paxos_commit(unsigned instance, const std::string &v);
51 rpcs *get_rpcs() { return paxos_acceptor->get_rpcs(); }
52 void breakpoint(int b) { paxos_proposer->breakpoint(b); }