62312926192b2fe4ba5b5c3dd6e5f6703bb4d259
[iotcloud.git] / version2 / src / java / iotcloud / Abort.java
1 package iotcloud;
2
3 import java.nio.ByteBuffer;
4
5 /**
6  * This Entry records the abort sent by a given machine.
7  * @author Ali Younis <ayounis@uci.edu>
8  * @version 1.0
9  */
10
11
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
19         private Pair<Long, Long> abortId = null;
20
21
22         public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber ,  long _transactionMachineId, long _transactionArbitrator) {
23                 super(slot);
24                 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
25                 transactionSequenceNumber = _transactionSequenceNumber;
26                 transactionMachineId = _transactionMachineId;
27                 transactionArbitrator = _transactionArbitrator;
28                 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
29         }
30
31         public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber, long _sequenceNumber ,  long _transactionMachineId, long _transactionArbitrator) {
32                 super(slot);
33                 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
34                 transactionSequenceNumber = _transactionSequenceNumber;
35                 sequenceNumber = _sequenceNumber;
36                 transactionMachineId = _transactionMachineId;
37                 transactionArbitrator = _transactionArbitrator;
38                 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
39         }
40
41         public Pair<Long, Long> getAbortId() {
42                 return abortId;
43         }
44
45         public long getTransactionMachineId() {
46                 return transactionMachineId;
47         }
48
49         public long getTransactionSequenceNumber() {
50                 return transactionSequenceNumber;
51         }
52
53         public long getTransactionClientLocalSequenceNumber() {
54                 return transactionClientLocalSequenceNumber;
55         }
56
57         public void setSlot(Slot s) {
58                 parentslot = s;
59         }
60
61         public long getSequenceNumber() {
62                 return sequenceNumber;
63         }
64
65         public void setSequenceNumber(long _sequenceNumber) {
66                 sequenceNumber = _sequenceNumber;
67         }
68
69
70         public long getTransactionArbitrator() {
71                 return transactionArbitrator;
72         }
73
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);
81         }
82
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);
90         }
91
92         public int getSize() {
93                 return (4 * Long.BYTES) + Byte.BYTES;
94         }
95
96         public byte getType() {
97                 return Entry.TypeAbort;
98         }
99
100         public Entry getCopy(Slot s) {
101                 return new Abort(s, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator);
102         }
103 }