Cosmetic improvements.
[invirt/third/libt4.git] / paxos_protocol.h
index 5e8afdd..c61e2eb 100644 (file)
@@ -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<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