X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/24bebc0ecf83446c7371eff69042322aab34976a..c279db4240a3a3c30f069ab9dea8055cf94280da:/paxos_protocol.h diff --git a/paxos_protocol.h b/paxos_protocol.h index 5e8afdd..8f8f816 100644 --- a/paxos_protocol.h +++ b/paxos_protocol.h @@ -12,28 +12,25 @@ 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(paxos_protocol::prepareres) +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 = std::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)); +} #endif