edits
[iotcloud.git] / version2 / src / C / Transaction.h
index d04e47f..dab4949 100644 (file)
@@ -1,33 +1,35 @@
-
+#ifndef TRANSACTION_H
+#define TRANSACTION_H
+#include "common.h"
 
 class Transaction {
-
-    private Map<Integer, TransactionPart> parts = NULL;
-    private Set<Integer> missingParts = NULL;
-    private List<Integer> partsPendingSend = NULL;
-    private bool isComplete = false;
-    private bool hasLastPart = false;
-    private Set<KeyValue> keyValueGuardSet = NULL;
-    private Set<KeyValue> keyValueUpdateSet = NULL;
-    private bool isDead = false;
-    private int64_t sequenceNumber = -1;
-    private int64_t clientLocalSequenceNumber = -1;
-    private int64_t arbitratorId = -1;
-    private int64_t machineId = -1;
-    private Pair<Long, Long> transactionId = NULL;
-
-    private int nextPartToSend = 0;
-    private bool didSendAPartToServer = false;
-
-    private TransactionStatus transactionStatus = NULL;
-
   private bool hadServerFailure = false;
+ private:
+       Hashtable<int32_t, TransactionPart *> parts = NULL;
+       Set<int32_t> missingParts = NULL;
+       Vector<int32_t> partsPendingSend = NULL;
+  bool isComplete = false;
+  bool hasLastPart = false;
+       Hashset<KeyValue *> * keyValueGuardSet = NULL;
+       Hashset<KeyValue *> * keyValueUpdateSet = NULL;
+       bool isDead = false;
+  int64_t sequenceNumber = -1;
+       int64_t clientLocalSequenceNumber = -1;
+       int64_t arbitratorId = -1;
+       int64_t machineId = -1;
+       Pair<uint64_t, uint64_t> transactionId = NULL;
+       
+  int nextPartToSend = 0;
+       bool didSendAPartToServer = false;
+       
+  TransactionStatus transactionStatus = NULL;
+
+ bool hadServerFailure = false;
 
     public Transaction() {
-        parts = new HashMap<Integer, TransactionPart>();
+        parts = new Hashtable<int32_t, TransactionPart>();
         keyValueGuardSet = new HashSet<KeyValue>();
         keyValueUpdateSet = new HashSet<KeyValue>();
-        partsPendingSend = new ArrayList<Integer>();
+        partsPendingSend = new Vector<int32_t>();
     }
 
     public void addPartEncode(TransactionPart newPart) {
@@ -63,7 +65,7 @@ class Transaction {
             // 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>();
+            missingParts = new HashSet<int32_t>();
             hasLastPart = true;
 
             for (int i = 0; i < newPart.getPartNumber(); i++) {
@@ -106,7 +108,7 @@ class Transaction {
     public void setSequenceNumber(int64_t _sequenceNumber) {
         sequenceNumber = _sequenceNumber;
 
-        for (Integer i : parts.keySet()) {
+        for (int32_t i : parts.keySet()) {
             parts.get(i).setSequenceNumber(sequenceNumber);
         }
     }
@@ -115,7 +117,7 @@ class Transaction {
         return clientLocalSequenceNumber;
     }
 
-    public Map<Integer, TransactionPart> getParts() {
+    public Hashtable<int32_t, TransactionPart> getParts() {
         return parts;
     }
 
@@ -159,7 +161,7 @@ class Transaction {
         return transactionStatus;
     }
 
-    public void removeSentParts(List<Integer> sentParts) {
+    public void removeSentParts(Vector<int32_t> sentParts) {
         nextPartToSend = 0;
         if(partsPendingSend.removeAll(sentParts))
         {
@@ -192,7 +194,7 @@ class Transaction {
         return isComplete;
     }
 
-    public Pair<Long, Long> getId() {
+    public Pair<int64_t, int64_t> getId() {
         return transactionId;
     }
 
@@ -206,7 +208,7 @@ class Transaction {
         isDead = true;
 
         // Make all the parts of this transaction dead
-        for (Integer partNumber : parts.keySet()) {
+        for (int32_t partNumber : parts.keySet()) {
             TransactionPart part = parts.get(partNumber);
             part.setDead();
         }
@@ -255,7 +257,7 @@ class Transaction {
         }
     }
 
-    public bool evaluateGuard(Map<IoTString, KeyValue> committedKeyValueTable, Map<IoTString, KeyValue> speculatedKeyValueTable, Map<IoTString, KeyValue> pendingTransactionSpeculatedKeyValueTable) {
+    public bool evaluateGuard(Hashtable<IoTString, KeyValue> committedKeyValueTable, Hashtable<IoTString, KeyValue> speculatedKeyValueTable, Hashtable<IoTString, KeyValue> pendingTransactionSpeculatedKeyValueTable) {
         for (KeyValue kvGuard : keyValueGuardSet) {
 
             // First check if the key is in the speculative table, this is the value of the latest assumption
@@ -297,4 +299,5 @@ class Transaction {
         }
         return true;
     }
-}
+};
+#endif