X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/24bebc0ecf83446c7371eff69042322aab34976a..03b35a9a1bd1f583e32b27d260b223a0989d6c75:/paxos.h diff --git a/paxos.h b/paxos.h index 426dfef..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 = {(uint32_t)std::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);