3 import java.nio.ByteBuffer;
8 * This Entry records the abort sent by a given machine.
9 * @author Ali Younis <ayounis@uci.edu>
14 class Abort extends Entry {
15 private long transactionClientLocalSequenceNumber = -1;
16 private long transactionSequenceNumber = -1;
17 private long sequenceNumber = -1;
18 private long transactionMachineId = -1;
19 private long transactionArbitrator = -1;
20 private long arbitratorLocalSequenceNumber = -1;
22 private Pair<Long, Long> abortId = null;
25 public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber , long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
27 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
28 transactionSequenceNumber = _transactionSequenceNumber;
29 transactionMachineId = _transactionMachineId;
30 transactionArbitrator = _transactionArbitrator;
31 arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
32 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
35 public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber, long _sequenceNumber , long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
37 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
38 transactionSequenceNumber = _transactionSequenceNumber;
39 sequenceNumber = _sequenceNumber;
40 transactionMachineId = _transactionMachineId;
41 transactionArbitrator = _transactionArbitrator;
42 arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
44 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
47 public Pair<Long, Long> getAbortId() {
51 public long getTransactionMachineId() {
52 return transactionMachineId;
55 public long getTransactionSequenceNumber() {
56 return transactionSequenceNumber;
59 public long getTransactionClientLocalSequenceNumber() {
60 return transactionClientLocalSequenceNumber;
63 public long getArbitratorLocalSequenceNumber() {
64 return arbitratorLocalSequenceNumber;
68 public void setSlot(Slot s) {
72 public long getSequenceNumber() {
73 return sequenceNumber;
76 public void setSequenceNumber(long _sequenceNumber) {
77 sequenceNumber = _sequenceNumber;
81 public long getTransactionArbitrator() {
82 return transactionArbitrator;
85 static Entry decode(Slot slot, ByteBuffer bb) {
86 long transactionClientLocalSequenceNumber = bb.getLong();
87 long transactionSequenceNumber = bb.getLong();
88 long sequenceNumber = bb.getLong();
89 long transactionMachineId = bb.getLong();
90 long transactionArbitrator = bb.getLong();
91 long arbitratorLocalSequenceNumber = bb.getLong();
93 return new Abort(slot, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);
96 public void encode(ByteBuffer bb) {
97 bb.put(Entry.TypeAbort);
98 bb.putLong(transactionClientLocalSequenceNumber);
99 bb.putLong(transactionSequenceNumber);
100 bb.putLong(sequenceNumber);
101 bb.putLong(transactionMachineId);
102 bb.putLong(transactionArbitrator);
103 bb.putLong(arbitratorLocalSequenceNumber);
106 public int getSize() {
107 //return (6 * Long.BYTES) + Byte.BYTES;
108 return (6 * Long.SIZE/8) + Byte.SIZE/8;
111 public byte getType() {
112 return Entry.TypeAbort;
115 public Entry getCopy(Slot s) {
116 return new Abort(s, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);