X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/ba03b19875aa2e3586e49b10904563cdd3b91de0..869c0cc91d8f6b2bb80026616372d16450b64d9f:/paxos.h diff --git a/paxos.h b/paxos.h index 642d3ff..79924a3 100644 --- a/paxos.h +++ b/paxos.h @@ -7,15 +7,14 @@ #include "log.h" using prepareres = paxos_protocol::prepareres; - -using node_t = string; -using nodes_t = vector; -using value_t = string; +using node_t = paxos_protocol::node_t; +using nodes_t = paxos_protocol::nodes_t; +using value_t = paxos_protocol::value_t; class paxos_change { public: virtual void paxos_commit(unsigned instance, const value_t & v) = 0; - virtual ~paxos_change() {} + virtual ~paxos_change(); }; extern bool isamember(const node_t & m, const nodes_t & nodes); @@ -23,13 +22,12 @@ extern bool majority(const nodes_t & l1, const nodes_t & l2); class proposer_acceptor { private: - mutex proposer_mutex; - mutex acceptor_mutex; + std::mutex proposer_mutex, acceptor_mutex; paxos_change *delegate; node_t me; - rpcs pxs{(in_port_t)stoi(me)}; + rpcs pxs{(in_port_t)std::stoi(me)}; bool break1 = false; bool break2 = false; @@ -43,10 +41,10 @@ class proposer_acceptor { prop_t accepted = {0, me}; // number of highest proposal accepted value_t accepted_value; // value of highest proposal accepted unsigned instance_h = 0; // number of the highest instance we have decided - map values; // vals of each instance + std::map values; // vals of each instance friend class log; - log l = {this, me}; + class log l = {this, me}; void commit(unsigned instance, const value_t & v); void commit(unsigned instance, const value_t & v, lock & pxs_mutex_lock); @@ -67,7 +65,7 @@ class proposer_acceptor { unsigned instance() { return instance_h; } const value_t & value(unsigned instance) { return values[instance]; } string dump() { return l.dump(); } - void restore(const string &s) { l.restore(s); l.logread(); } + void restore(const string & s) { l.restore(s); l.logread(); } rpcs *get_rpcs() { return &pxs; } bool run(unsigned instance, const nodes_t & cnodes, const value_t & v);