1 #ifndef paxos_protocol_h
2 #define paxos_protocol_h
12 LEXICOGRAPHIC_COMPARISON(prop_t)
15 namespace paxos_protocol {
16 enum status : rpc_protocol::status { OK, ERR };
23 MEMBERS(oldinstance, accept, n_a, v_a)
25 using node_t = string;
26 using nodes_t = vector<node_t>;
27 using value_t = string;
29 REMOTE_PROCEDURE_BASE(0x11000);
30 REMOTE_PROCEDURE(1, preparereq, (prepareres &, node_t, unsigned, prop_t));
31 REMOTE_PROCEDURE(2, acceptreq, (bool &, node_t, unsigned, prop_t, value_t));
32 REMOTE_PROCEDURE(3, decidereq, (int &, node_t, unsigned, value_t));
33 REMOTE_PROCEDURE(4, heartbeat, (int &, string, unsigned));