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;
18 private long arbitratorLocalSequenceNumber = -1;
20 private Pair<Long, Long> abortId = null;
23 public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber , long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
25 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
26 transactionSequenceNumber = _transactionSequenceNumber;
27 transactionMachineId = _transactionMachineId;
28 transactionArbitrator = _transactionArbitrator;
29 arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
30 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
33 public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber, long _sequenceNumber , long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
35 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
36 transactionSequenceNumber = _transactionSequenceNumber;
37 sequenceNumber = _sequenceNumber;
38 transactionMachineId = _transactionMachineId;
39 transactionArbitrator = _transactionArbitrator;
40 arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
42 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
45 public Pair<Long, Long> getAbortId() {
49 public long getTransactionMachineId() {
50 return transactionMachineId;
53 public long getTransactionSequenceNumber() {
54 return transactionSequenceNumber;
57 public long getTransactionClientLocalSequenceNumber() {
58 return transactionClientLocalSequenceNumber;
61 public long getArbitratorLocalSequenceNumber() {
62 return arbitratorLocalSequenceNumber;
66 public void setSlot(Slot s) {
70 public long getSequenceNumber() {
71 return sequenceNumber;
74 public void setSequenceNumber(long _sequenceNumber) {
75 sequenceNumber = _sequenceNumber;
79 public long getTransactionArbitrator() {
80 return transactionArbitrator;
83 static Entry decode(Slot slot, ByteBuffer bb) {
84 long transactionClientLocalSequenceNumber = bb.getLong();
85 long transactionSequenceNumber = bb.getLong();
86 long sequenceNumber = bb.getLong();
87 long transactionMachineId = bb.getLong();
88 long transactionArbitrator = bb.getLong();
89 long arbitratorLocalSequenceNumber = bb.getLong();
91 return new Abort(slot, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);
94 public void encode(ByteBuffer bb) {
95 bb.put(Entry.TypeAbort);
96 bb.putLong(transactionClientLocalSequenceNumber);
97 bb.putLong(transactionSequenceNumber);
98 bb.putLong(sequenceNumber);
99 bb.putLong(transactionMachineId);
100 bb.putLong(transactionArbitrator);
101 bb.putLong(arbitratorLocalSequenceNumber);
104 public int getSize() {
105 return (6 * Long.BYTES) + Byte.BYTES;
108 public byte getType() {
109 return Entry.TypeAbort;
112 public Entry getCopy(Slot s) {
113 return new Abort(s, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);