Timing, Attacks
[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         private long arbitratorLocalSequenceNumber = -1;
19
20         private Pair<Long, Long> abortId = null;
21
22
23         public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber ,  long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
24                 super(slot);
25                 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
26                 transactionSequenceNumber = _transactionSequenceNumber;
27                 transactionMachineId = _transactionMachineId;
28                 transactionArbitrator = _transactionArbitrator;
29                 arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
30                 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
31         }
32
33         public Abort(Slot slot, long _transactionClientLocalSequenceNumber, long _transactionSequenceNumber, long _sequenceNumber ,  long _transactionMachineId, long _transactionArbitrator, long _arbitratorLocalSequenceNumber) {
34                 super(slot);
35                 transactionClientLocalSequenceNumber = _transactionClientLocalSequenceNumber;
36                 transactionSequenceNumber = _transactionSequenceNumber;
37                 sequenceNumber = _sequenceNumber;
38                 transactionMachineId = _transactionMachineId;
39                 transactionArbitrator = _transactionArbitrator;
40                 arbitratorLocalSequenceNumber = _arbitratorLocalSequenceNumber;
41
42                 abortId = new Pair<Long, Long>(transactionMachineId, transactionClientLocalSequenceNumber);
43         }
44
45         public Pair<Long, Long> getAbortId() {
46                 return abortId;
47         }
48
49         public long getTransactionMachineId() {
50                 return transactionMachineId;
51         }
52
53         public long getTransactionSequenceNumber() {
54                 return transactionSequenceNumber;
55         }
56
57         public long getTransactionClientLocalSequenceNumber() {
58                 return transactionClientLocalSequenceNumber;
59         }
60
61         public long getArbitratorLocalSequenceNumber() {
62                 return arbitratorLocalSequenceNumber;
63         }
64
65
66         public void setSlot(Slot s) {
67                 parentslot = s;
68         }
69
70         public long getSequenceNumber() {
71                 return sequenceNumber;
72         }
73
74         public void setSequenceNumber(long _sequenceNumber) {
75                 sequenceNumber = _sequenceNumber;
76         }
77
78
79         public long getTransactionArbitrator() {
80                 return transactionArbitrator;
81         }
82
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();
90
91                 return new Abort(slot, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);
92         }
93
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);
102         }
103
104         public int getSize() {
105                 return (6 * Long.BYTES) + Byte.BYTES;
106         }
107
108         public byte getType() {
109                 return Entry.TypeAbort;
110         }
111
112         public Entry getCopy(Slot s) {
113                 return new Abort(s, transactionClientLocalSequenceNumber, transactionSequenceNumber, sequenceNumber, transactionMachineId, transactionArbitrator, arbitratorLocalSequenceNumber);
114         }
115 }