3 import java.nio.ByteBuffer;
6 * This Entry records the abort sent by a given machine.
7 * @author Ali Younis <ayounis@uci.edu>
12 class Abort extends Entry{
13 private long transactionClientLocalSequenceNumber = -1;
14 private long transactionSequenceNumber = -1;
15 private long sequenceNumber = -1;
16 private long transactionMachineId = -1;
17 private long transactionArbitrator = -1;
19 private Pair<Long, Long> abortId = null;
22 public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber , long _transactionMachineId, long _transactionArbitrator) {
24 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
25 transactionSequenceNumber = _transactionSequenceNumber;
26 transactionMachineId = _transactionMachineId;
27 transactionArbitrator = _transactionArbitrator;
28 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
31 public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber, long _sequenceNumber , long _transactionMachineId, long _transactionArbitrator) {
33 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
34 transactionSequenceNumber = _transactionSequenceNumber;
35 sequenceNumber = _sequenceNumber;
36 transactionMachineId = _transactionMachineId;
37 transactionArbitrator = _transactionArbitrator;
38 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
41 public Pair<Long, Long> getAbortId() {
45 public long getTransactionMachineId() {
46 return transactionMachineId;
49 public long getTransactionSequenceNumber() {
50 return transactionSequenceNumber;
53 public long getTransactionClientLocalSequenceNumber() {
54 return transactionClientLocalSequenceNumber;
57 public void setSlot(Slot s) {
61 public long getSequenceNumber() {
62 return sequenceNumber;
65 public void setSequenceNumber(long _sequenceNumber) {
66 sequenceNumber = _sequenceNumber;
70 public long getTransactionArbitrator() {
71 return transactionArbitrator;
74 static Entry decode(Slot slot, ByteBuffer bb) {
75 long transactionClientLocalSequenceNumber = bb.getLong();
76 long transactionSequenceNumber = bb.getLong();
77 long sequenceNumber = bb.getLong();
78 long transactionMachineId = bb.getLong();
79 long transactionArbitrator = bb.getLong();
80 return new Abort(slot, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator);
83 public void encode(ByteBuffer bb) {
84 bb.put(Entry.TypeAbort);
85 bb.putLong(transactionClientLocalSequenceNumber);
86 bb.putLong(transactionSequenceNumber);
87 bb.putLong(sequenceNumber);
88 bb.putLong(transactionMachineId);
89 bb.putLong(transactionArbitrator);
92 public int getSize() {
93 return (4 * Long.BYTES) + Byte.BYTES;
96 public byte getType() {
97 return Entry.TypeAbort;
100 public Entry getCopy(Slot s) {
101 return new Abort(s, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator);