edits
[iotcloud.git] / version2 / src / C / Commit.cc
index 4925d6f..a5b952d 100644 (file)
@@ -1,84 +1,77 @@
+#include "commit.h"
+
+Commit::Commit() :
+       parts(new Hashtable<int32_t, CommitPart *>()),
+       missingParts(NULL),
+       fldisComplete(false),
+       hasLastPart(false),
+       keyValueUpdateSet(new HashSet<KeyValue *>()),
+       isDead(false),
+       sequenceNumber(-1),
+       machineId(-1),
+       transactionSequenceNumber(-1),
+       liveKeys(new Hashset<IoTString *>) {
+}
 
 
-class Commit {
-
-    Map<Integer, CommitPart> parts = NULL;
-    Set<Integer> missingParts = NULL;
-    bool isComplete = false;
-    bool hasLastPart = false;
-    Set<KeyValue> keyValueUpdateSet = NULL;
-    bool isDead = false;
-    int64_t sequenceNumber = -1;
-    int64_t machineId = -1;
-    int64_t transactionSequenceNumber = -1;
-
-    Set<IoTString> liveKeys = NULL;
-
-    Commit() {
-        parts = new HashMap<Integer, CommitPart>();
-        keyValueUpdateSet = new HashSet<KeyValue>();
-
-        liveKeys = new HashSet<IoTString>();
-    }
-
-    Commit(int64_t _sequenceNumber, int64_t _machineId, int64_t _transactionSequenceNumber) {
-        parts = new HashMap<Integer, CommitPart>();
-        keyValueUpdateSet = new HashSet<KeyValue>();
-
-        liveKeys = new HashSet<IoTString>();
-
-        sequenceNumber = _sequenceNumber;
-        machineId = _machineId;
-        transactionSequenceNumber = _transactionSequenceNumber;
-        isComplete = true;
-    }
-
-
-    void addPartDecode(CommitPart newPart) {
-
-        if (isDead) {
-            // If dead then just kill this part and move on
-            newPart.setDead();
-            return;
-        }
-
-        CommitPart previoslySeenPart = parts.put(newPart.getPartNumber(), newPart);
-
-        if (previoslySeenPart != NULL) {
-            // Set dead the old one since the new one is a rescued version of this part
-            previoslySeenPart.setDead();
-        } else if (newPart.isLastPart()) {
-            missingParts = new HashSet<Integer>();
-            hasLastPart = true;
-
-            for (int i = 0; i < newPart.getPartNumber(); i++) {
-                if (parts.get(i) == NULL) {
-                    missingParts.add(i);
-                }
-            }
-        }
-
-        if (!isComplete && hasLastPart) {
-
-            // We have seen this part so remove it from the set of missing parts
-            missingParts.remove(newPart.getPartNumber());
-
-            // Check if all the parts have been seen
-            if (missingParts.size() == 0) {
-
-                // We have all the parts
-                isComplete = true;
-
-                // Decode all the parts and create the key value guard and update sets
-                decodeCommitData();
+Commit::Commit(int64_t _sequenceNumber, int64_t _machineId, int64_t _transactionSequenceNumber) :
+       parts(new Hashtable<int32_t, CommitPart *>()),
+       missingParts(NULL),
+       fldisComplete(true),
+       hasLastPart(false),
+       keyValueUpdateSet(new HashSet<KeyValue *>()),
+       isDead(false),
+       sequenceNumber(_sequenceNumber),
+       machineId(_machineId),
+       transactionSequenceNumber(_transactionSequenceNumber),
+       liveKeys(new Hashset<IoTString *>) {
+}
 
-                // Get the sequence number and arbitrator of this transaction
-                sequenceNumber = parts.get(0).getSequenceNumber();
-                machineId = parts.get(0).getMachineId();
-                transactionSequenceNumber = parts.get(0).getTransactionSequenceNumber();
-            }
-        }
-    }
+void Commit::addPartDecode(CommitPart newPart) {
+
+       if (isDead) {
+               // If dead then just kill this part and move on
+               newPart.setDead();
+               return;
+       }
+
+       CommitPart previoslySeenPart = parts.put(newPart.getPartNumber(), newPart);
+       
+       if (previoslySeenPart != NULL) {
+               // Set dead the old one since the new one is a rescued version of this part
+               previoslySeenPart.setDead();
+       } else if (newPart.isLastPart()) {
+               missingParts = new HashSet<int32_t>();
+               hasLastPart = true;
+               
+               for (int i = 0; i < newPart.getPartNumber(); i++) {
+                       if (parts.get(i) == NULL) {
+                               missingParts.add(i);
+                       }
+               }
+       }
+       
+       if (!fldisComplete && hasLastPart) {
+               
+               // We have seen this part so remove it from the set of missing parts
+               missingParts.remove(newPart.getPartNumber());
+               
+               // Check if all the parts have been seen
+               if (missingParts.size() == 0) {
+                       
+                       // We have all the parts
+                       fldisComplete = true;
+                       
+                       // Decode all the parts and create the key value guard and update sets
+                       decodeCommitData();
+                       
+                       // Get the sequence number and arbitrator of this transaction
+                       sequenceNumber = parts.get(0).getSequenceNumber();
+                       machineId = parts.get(0).getMachineId();
+                       transactionSequenceNumber = parts.get(0).getTransactionSequenceNumber();
+               }
+       }
+}
 
     int64_t getSequenceNumber() {
         return sequenceNumber;
@@ -88,7 +81,7 @@ class Commit {
         return transactionSequenceNumber;
     }
 
-    Map<Integer, CommitPart> getParts() {
+    Hashtable<int32_t, CommitPart> getParts() {
         return parts;
     }
 
@@ -109,21 +102,9 @@ class Commit {
         return keyValueUpdateSet;
     }
 
-    int getNumberOfParts() {
-        return parts.size();
-    }
-
-    int64_t getMachineId() {
-        return machineId;
-    }
-
-    bool isComplete() {
-        return isComplete;
-    }
-
-    bool isLive() {
-        return !isDead;
-    }
+int32_t getNumberOfParts() {
+       return parts.size();
+}
 
     void setDead() {
         if (isDead) {
@@ -135,7 +116,7 @@ class Commit {
         isDead = true;
 
         // Make all the parts of this transaction dead
-        for (Integer partNumber : parts.keySet()) {
+        for (int32_t partNumber : parts.keySet()) {
             CommitPart part = parts.get(partNumber);
             part.setDead();
         }
@@ -237,7 +218,7 @@ class Commit {
         return bbEncode.array();
     }
 
-    void setKVsMap(Map<IoTString, KeyValue> newKVs) {
+    void setKVsMap(Hashtable<IoTString, KeyValue> newKVs) {
         keyValueUpdateSet.clear();
         liveKeys.clear();
 
@@ -255,7 +236,7 @@ class Commit {
             return older;
         }
 
-        Map<IoTString, KeyValue> kvSet = new HashMap<IoTString, KeyValue>();
+        Hashtable<IoTString, KeyValue> kvSet = new Hashtable<IoTString, KeyValue>();
         for (KeyValue kv : older.getKeyValueUpdateSet()) {
             kvSet.put(kv.getKey(), kv);
         }