vector<string> mems;
mutex cfg_mutex;
cond config_cond;
- paxos_protocol::status heartbeat(int &r, string m, unsigned instance);
- string value(const vector<string> &mems) const;
- vector<string> members(const string &v) const;
- void get_view(unsigned instance, vector<string> &m, lock &cfg_mutex_lock);
- bool remove(const string &, lock &cfg_mutex_lock);
- void reconstruct(lock &cfg_mutex_lock);
+ paxos_protocol::status heartbeat(int & r, string m, unsigned instance);
+ void get_view(unsigned instance, vector<string> & m, lock & cfg_mutex_lock);
+ bool remove(const string &, lock & cfg_mutex_lock);
+ void reconstruct(lock & cfg_mutex_lock);
typedef enum {
OK, // response and same view #
VIEWERR, // response but different view #
FAILURE, // no response
} heartbeat_t;
- heartbeat_t doheartbeat(const string &m, lock &cfg_mutex_lock);
+ heartbeat_t doheartbeat(const string & m, lock & cfg_mutex_lock);
public:
- config(const string &_first, const string &_me, config_view_change *_vc);
+ config(const string & _first, const string & _me, config_view_change *_vc);
unsigned view_id() { return my_view_id; }
- const string &myaddr() const { return me; }
+ const string & myaddr() const { return me; }
string dump() { return paxos.dump(); }
- void get_view(unsigned instance, vector<string> &m);
- void restore(const string &s);
+ void get_view(unsigned instance, vector<string> & m);
+ void restore(const string & s);
bool add(const string &, unsigned view_id);
- bool ismember(const string &m, unsigned view_id);
- void heartbeater(void);
- void paxos_commit(unsigned instance, const string &v);
+ bool ismember(const string & m, unsigned view_id);
+ void heartbeater NORETURN ();
+ void paxos_commit(unsigned instance, const string & v);
rpcs *get_rpcs() { return paxos.get_rpcs(); }
void breakpoint(int b) { paxos.breakpoint(b); }
};