private long seqnum;
private long machineid;
- private Set<KeyValue> keyValueUpdateSet;
+ private Set<KeyValue> keyValueUpdateSet = null;
private Guard guard;
public Transaction(Slot slot, long _seqnum, long _machineid, Set<KeyValue> _keyValueUpdateSet, Guard _guard) {
super(slot);
seqnum = _seqnum;
machineid = _machineid;
- keyValueUpdateSet = _keyValueUpdateSet;
- guard = _guard;
+
+ keyValueUpdateSet = new HashSet<KeyValue>();
+
+ for (KeyValue kv : _keyValueUpdateSet) {
+ KeyValue kvCopy = kv.getCopy();
+ keyValueUpdateSet.add(kvCopy);
+ }
+
+ guard = _guard.getCopy();
}
public long getMachineID() {
return seqnum;
}
+ public Set<KeyValue> getkeyValueUpdateSet() {
+ return keyValueUpdateSet;
+ }
+
+ public Guard getGuard() {
+ return guard;
+ }
+
public byte getType() {
- return Entry.TypeLastMessage;
+ return Entry.TypeTransaction;
}
public int getSize() {
bb.putLong(seqnum);
bb.putLong(machineid);
+ bb.putInt(keyValueUpdateSet.size());
for (KeyValue kv : keyValueUpdateSet) {
kv.encode(bb);
}
int numberOfKeys = bb.getInt();
Set<KeyValue> kvSet = new HashSet<KeyValue>();
-
for (int i = 0; i < numberOfKeys; i++) {
KeyValue kv = KeyValue.decode(bb);
kvSet.add(kv);
return new Transaction(slot, seqnum, machineid, kvSet, guard);
}
-
-
public Entry getCopy(Slot s) {
return new Transaction(s, seqnum, machineid, keyValueUpdateSet, guard);
}