X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/5fd8cc8409d0efadc07dfe8d6774ad9ff477663d..4b9798f44ae94deabf87dd534337b55259272950:/paxos.h diff --git a/paxos.h b/paxos.h index 7188edb..170292a 100644 --- a/paxos.h +++ b/paxos.h @@ -3,15 +3,14 @@ #include #include -#include "rpc.h" +#include "rpc/rpc.h" #include "paxos_protocol.h" #include "log.h" -#include "mutex.h" class paxos_change { public: - virtual void paxos_commit(unsigned instance, std::string v) = 0; + virtual void paxos_commit(unsigned instance, const std::string &v) = 0; virtual ~paxos_change() {}; }; @@ -21,7 +20,7 @@ class acceptor { rpcs *pxs; paxos_change *cfg; std::string me; - mutex pxs_mutex; + std::mutex pxs_mutex; // Acceptor state prop_t n_h; // number of the highest proposal seen in a prepare @@ -31,18 +30,17 @@ class acceptor { std::map values; // vals of each instance void commit_wo(unsigned instance, std::string v); - paxos_protocol::status preparereq(std::string src, - paxos_protocol::preparearg a, - paxos_protocol::prepareres &r); - paxos_protocol::status acceptreq(std::string src, - paxos_protocol::acceptarg a, bool &r); - paxos_protocol::status decidereq(std::string src, - paxos_protocol::decidearg a, int &r); + paxos_protocol::status preparereq(paxos_protocol::prepareres &r, + std::string src, paxos_protocol::preparearg a); + paxos_protocol::status acceptreq(bool &r, std::string src, + paxos_protocol::acceptarg a); + paxos_protocol::status decidereq(int &r, std::string src, + paxos_protocol::decidearg a); friend class log; public: - acceptor(class paxos_change *cfg, bool _first, std::string _me, + acceptor(class paxos_change *cfg, bool _first, std::string _me, std::string _value); ~acceptor() {}; void commit(unsigned instance, std::string v); @@ -67,17 +65,17 @@ class proposer { bool break1; bool break2; - mutex pxs_mutex; + std::mutex pxs_mutex; // Proposer state bool stable; prop_t my_n; // number of the last proposal used in this instance void setn(); - bool prepare(unsigned instance, std::vector &accepts, + bool prepare(unsigned instance, std::vector &accepts, std::vector nodes, std::string &v); - void accept(unsigned instance, std::vector &accepts, + void accept(unsigned instance, std::vector &accepts, std::vector nodes, std::string v); void decide(unsigned instance, std::vector accepts, std::string v);