Fixing Bugs
[iotcloud.git] / version2 / src / java / iotcloud / Transaction.java
index 5acd5c2d0afa0ffc67435c42af198352ad69c1b8..2167d7d81804ee1f10fcb77dc61a1687a1f8f8da 100644 (file)
@@ -10,12 +10,13 @@ class Transaction extends Entry {
     private long machineid;
     private Set<KeyValue> keyValueUpdateSet = null;
     private Guard guard;
+    private Long arbitrator;
 
-    public Transaction(Slot slot, long _seqnum, long _machineid, Set<KeyValue> _keyValueUpdateSet, Guard _guard) {
+    public Transaction(Slot slot, long _seqnum, long _machineid, Long _arbitrator, Set<KeyValue> _keyValueUpdateSet, Guard _guard) {
         super(slot);
         seqnum = _seqnum;
         machineid = _machineid;
-
+        arbitrator = _arbitrator;
         keyValueUpdateSet = new HashSet<KeyValue>();
 
         for (KeyValue kv : _keyValueUpdateSet) {
@@ -30,6 +31,10 @@ class Transaction extends Entry {
         return machineid;
     }
 
+    public long getArbitrator() {
+        return arbitrator;
+    }
+
     public long getSequenceNumber() {
         return seqnum;
     }
@@ -47,7 +52,7 @@ class Transaction extends Entry {
     }
 
     public int getSize() {
-        int size = 2 * Long.BYTES + Byte.BYTES; // seq, machine id, entry type
+        int size = 3 * Long.BYTES + Byte.BYTES; // seq, machine id, entry type
         size += Integer.BYTES; // number of KV's
 
         // Size of each KV
@@ -66,6 +71,7 @@ class Transaction extends Entry {
         bb.put(Entry.TypeTransaction);
         bb.putLong(seqnum);
         bb.putLong(machineid);
+        bb.putLong(arbitrator);
 
         bb.putInt(keyValueUpdateSet.size());
         for (KeyValue kv : keyValueUpdateSet) {
@@ -78,6 +84,7 @@ class Transaction extends Entry {
     static Entry decode(Slot slot, ByteBuffer bb) {
         long seqnum = bb.getLong();
         long machineid = bb.getLong();
+        long arbitrator = bb.getLong();
         int numberOfKeys = bb.getInt();
 
         Set<KeyValue> kvSet = new HashSet<KeyValue>();
@@ -88,10 +95,10 @@ class Transaction extends Entry {
 
         Guard guard = Guard.decode(bb);
 
-        return new Transaction(slot, seqnum, machineid, kvSet, guard);
+        return new Transaction(slot, seqnum, machineid, arbitrator, kvSet, guard);
     }
 
     public Entry getCopy(Slot s) {
-        return new Transaction(s, seqnum, machineid, keyValueUpdateSet, guard);
+        return new Transaction(s, seqnum, machineid, arbitrator, keyValueUpdateSet, guard);
     }
 }
\ No newline at end of file