LEXICOGRAPHIC_COMPARISON(prop_t)
};
-MARSHALLABLE(prop_t)
-
-class paxos_protocol {
- public:
- enum status : status_t { OK, ERR };
- enum rpc_numbers : proc_t {
- preparereq = 0x11001,
- acceptreq,
- decidereq,
- heartbeat,
- };
-
- struct prepareres {
- bool oldinstance;
- bool accept;
- prop_t n_a;
- string v_a;
-
- MEMBERS(oldinstance, accept, n_a, v_a)
- };
+MARSHALLABLE_STRUCT(prop_t)
+
+namespace paxos_protocol {
+ enum status : rpc_protocol::status { OK, ERR };
+ struct prepareres {
+ bool oldinstance;
+ bool accept;
+ prop_t n_a;
+ string v_a;
+
+ MEMBERS(oldinstance, accept, n_a, v_a)
+ };
+ using node_t = string;
+ using nodes_t = vector<node_t>;
+ using value_t = string;
+
+ REMOTE_PROCEDURE_BASE(0x11000);
+ REMOTE_PROCEDURE(1, preparereq, (prepareres &, node_t, unsigned, prop_t));
+ REMOTE_PROCEDURE(2, acceptreq, (bool &, node_t, unsigned, prop_t, value_t));
+ REMOTE_PROCEDURE(3, decidereq, (int &, node_t, unsigned, value_t));
+ REMOTE_PROCEDURE(4, heartbeat, (int &, string, unsigned));
};
-MARSHALLABLE(paxos_protocol::prepareres)
+MARSHALLABLE_STRUCT(paxos_protocol::prepareres)
#endif