#ifndef rsm_protocol_h
#define rsm_protocol_h
+#include "types.h"
#include "rpc/rpc.h"
class rsm_client_protocol {
public:
enum status : status_t { OK, ERR, BUSY};
enum rpc_numbers : proc_t {
- invoke = 0x10001,
+ invoke = 0xa001,
transferreq,
transferdonereq,
joinreq,
};
struct transferres {
- std::string state;
+ string state;
viewstamp last;
};
-
- struct joinres {
- std::string log;
- };
};
-inline bool operator==(viewstamp a, viewstamp b) {
- return a.vid == b.vid && a.seqno == b.seqno;
-}
-
-inline bool operator>(viewstamp a, viewstamp b) {
- return (a.vid > b.vid) || ((a.vid == b.vid) && a.seqno > b.seqno);
-}
-
-inline bool operator!=(viewstamp a, viewstamp b) {
- return a.vid != b.vid || a.seqno != b.seqno;
-}
+inline bool operator==(viewstamp a, viewstamp b) { return tie(a.vid, a.seqno) == tie(b.vid, b.seqno); }
+inline bool operator>(viewstamp a, viewstamp b) { return tie(a.vid, a.seqno) > tie(b.vid, b.seqno); }
+inline bool operator!=(viewstamp a, viewstamp b) { return tie(a.vid, a.seqno) != tie(b.vid, b.seqno); }
inline marshall& operator<<(marshall &m, viewstamp v) {
return m << v.vid << v.seqno;
return u >> r.state >> r.last;
}
-inline marshall & operator<<(marshall &m, rsm_protocol::joinres r) {
- return m << r.log;
-}
-
-inline unmarshall & operator>>(unmarshall &u, rsm_protocol::joinres &r) {
- return u >> r.log;
-}
-
class rsm_test_protocol {
public:
enum status : status_t {OK, ERR};