#include <string>
#include <vector>
-#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() {};
};
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
std::map<unsigned,std::string> 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);
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<std::string> &accepts,
+ bool prepare(unsigned instance, std::vector<std::string> &accepts,
std::vector<std::string> nodes,
std::string &v);
- void accept(unsigned instance, std::vector<std::string> &accepts,
+ void accept(unsigned instance, std::vector<std::string> &accepts,
std::vector<std::string> nodes, std::string v);
void decide(unsigned instance, std::vector<std::string> accepts,
std::string v);