f053faf35cc0794fc6b0f83ab6869e82ae4b73a9
[iot2.git] / benchmarks / other / PhoneInterface / Control / app / src / main / java / iotcloud / Abort.java
1 package iotcloud;
2
3 import java.nio.ByteBuffer;
4
5 import java.lang.Long;
6
7 /**
8  * This Entry records the abort sent by a given machine.
9  * @author Ali Younis <ayounis@uci.edu>
10  * @version 1.0
11  */
12
13
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;
21
22         private Pair<Long, Long> abortId = null;
23
24
25         public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber ,  long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
26                 super(slot);
27                 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
28                 transactionSequenceNumber = _transactionSequenceNumber;
29                 transactionMachineId = _transactionMachineId;
30                 transactionArbitrator = _transactionArbitrator;
31                 arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
32                 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
33         }
34
35         public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber, long _sequenceNumber ,  long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
36                 super(slot);
37                 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
38                 transactionSequenceNumber = _transactionSequenceNumber;
39                 sequenceNumber = _sequenceNumber;
40                 transactionMachineId = _transactionMachineId;
41                 transactionArbitrator = _transactionArbitrator;
42                 arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
43
44                 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
45         }
46
47         public Pair<Long, Long> getAbortId() {
48                 return abortId;
49         }
50
51         public long getTransactionMachineId() {
52                 return transactionMachineId;
53         }
54
55         public long getTransactionSequenceNumber() {
56                 return transactionSequenceNumber;
57         }
58
59         public long getTransactionClientLocalSequenceNumber() {
60                 return transactionClientLocalSequenceNumber;
61         }
62
63         public long getArbitratorLocalSequenceNumber() {
64                 return arbitratorLocalSequenceNumber;
65         }
66
67
68         public void setSlot(Slot s) {
69                 parentslot = s;
70         }
71
72         public long getSequenceNumber() {
73                 return sequenceNumber;
74         }
75
76         public void setSequenceNumber(long _sequenceNumber) {
77                 sequenceNumber = _sequenceNumber;
78         }
79
80
81         public long getTransactionArbitrator() {
82                 return transactionArbitrator;
83         }
84
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();
92
93                 return new Abort(slot, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);
94         }
95
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);
104         }
105
106         //public int getSize() { return (6 * Long.BYTES) + Byte.BYTES; }
107         public int getSize() { return (6 * Long.SIZE/8) + (Byte.SIZE/8); }
108
109         public byte getType() {
110                 return Entry.TypeAbort;
111         }
112
113         public Entry getCopy(Slot s) {
114                 return new Abort(s, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);
115         }
116 }