--- /dev/null
+package iotcloud;
+
+import java.nio.ByteBuffer;
+
+import java.lang.Long;
+
+/**
+ * This Entry records the abort sent by a given machine.
+ * @author Ali Younis <ayounis@uci.edu>
+ * @version 1.0
+ */
+
+
+class Abort extends Entry {
+ private long transactionClientLocalSequenceNumber = -1;
+ private long transactionSequenceNumber = -1;
+ private long sequenceNumber = -1;
+ private long transactionMachineId = -1;
+ private long transactionArbitrator = -1;
+ private long arbitratorLocalSequenceNumber = -1;
+
+ private Pair<Long, Long> abortId = null;
+
+
+ public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber , long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
+ super(slot);
+ transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
+ transactionSequenceNumber = _transactionSequenceNumber;
+ transactionMachineId = _transactionMachineId;
+ transactionArbitrator = _transactionArbitrator;
+ arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
+ abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
+ }
+
+ public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber, long _sequenceNumber , long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
+ super(slot);
+ transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
+ transactionSequenceNumber = _transactionSequenceNumber;
+ sequenceNumber = _sequenceNumber;
+ transactionMachineId = _transactionMachineId;
+ transactionArbitrator = _transactionArbitrator;
+ arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
+
+ abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
+ }
+
+ public Pair<Long, Long> getAbortId() {
+ return abortId;
+ }
+
+ public long getTransactionMachineId() {
+ return transactionMachineId;
+ }
+
+ public long getTransactionSequenceNumber() {
+ return transactionSequenceNumber;
+ }
+
+ public long getTransactionClientLocalSequenceNumber() {
+ return transactionClientLocalSequenceNumber;
+ }
+
+ public long getArbitratorLocalSequenceNumber() {
+ return arbitratorLocalSequenceNumber;
+ }
+
+
+ public void setSlot(Slot s) {
+ parentslot = s;
+ }
+
+ public long getSequenceNumber() {
+ return sequenceNumber;
+ }
+
+ public void setSequenceNumber(long _sequenceNumber) {
+ sequenceNumber = _sequenceNumber;
+ }
+
+
+ public long getTransactionArbitrator() {
+ return transactionArbitrator;
+ }
+
+ static Entry decode(Slot slot, ByteBuffer bb) {
+ long transactionClientLocalSequenceNumber = bb.getLong();
+ long transactionSequenceNumber = bb.getLong();
+ long sequenceNumber = bb.getLong();
+ long transactionMachineId = bb.getLong();
+ long transactionArbitrator = bb.getLong();
+ long arbitratorLocalSequenceNumber = bb.getLong();
+
+ return new Abort(slot, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);
+ }
+
+ public void encode(ByteBuffer bb) {
+ bb.put(Entry.TypeAbort);
+ bb.putLong(transactionClientLocalSequenceNumber);
+ bb.putLong(transactionSequenceNumber);
+ bb.putLong(sequenceNumber);
+ bb.putLong(transactionMachineId);
+ bb.putLong(transactionArbitrator);
+ bb.putLong(arbitratorLocalSequenceNumber);
+ }
+
+ public int getSize() {
+ return (6 * Long.BYTES) + Byte.BYTES;
+ }
+
+ public byte getType() {
+ return Entry.TypeAbort;
+ }
+
+ public Entry getCopy(Slot s) {
+ return new Abort(s, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);
+ }
+}
\ No newline at end of file