X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/24bebc0ecf83446c7371eff69042322aab34976a..f0dcb6b97d6d40f67698d1f71ac26970f1776f82:/paxos_protocol.h diff --git a/paxos_protocol.h b/paxos_protocol.h index 5e8afdd..c61e2eb 100644 --- a/paxos_protocol.h +++ b/paxos_protocol.h @@ -12,28 +12,29 @@ struct prop_t { 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; + 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