edits
[iotcloud.git] / version2 / src / C / TransactionPart.h
1 #ifndef TRANSACTIONPART_H
2 #define TRANSACTIONPART_H
3 #include "common.h"
4 #include "Entry.h"
5
6 // Max size of the part excluding the fixed size header
7 #define TransactionPart_MAX_NON_HEADER_SIZE 512
8
9 class TransactionPart : public Entry {
10 private:
11         int64_t sequenceNumber;
12         int64_t machineId;
13         int64_t arbitratorId;
14         int64_t clientLocalSequenceNumber;              // Sequence number of the transaction that this is a part of
15         int partNumber; // Parts position in the
16         bool fldisLastPart;
17
18         Pair<int64_t, int64_t> *transactionId;
19         Pair<int64_t, int32_t> *partId;
20
21         Array<char> *data;
22
23 public:
24         TransactionPart(Slot *s, int64_t _machineId, int64_t _arbitratorId, int64_t _clientLocalSequenceNumber, int _partNumber, Array<char> *_data, bool _isLastPart) : Entry(s),
25                 sequenceNumber(-1),
26                 machineId( _machineId),
27                 arbitratorId(_arbitratorId),
28                 clientLocalSequenceNumber(_clientLocalSequenceNumber),
29                 partNumber(_partNumber),
30                 fldisLastPart(_isLastPart),
31                 transactionId(new Pair<int64_t, int64_t>(machineId, clientLocalSequenceNumber)),
32                 partId(new Pair<int64_t, int32_t>(clientLocalSequenceNumber, partNumber)),
33                 data(_data) {
34         }
35
36         int getSize();
37         void setSlot(Slot s);
38         Pair<int64_t, int64_t> *getTransactionId();
39         int64_t getArbitratorId();
40         Pair<int64_t, int32_t> *getPartId();
41         int getPartNumber();
42         int getDataSize();
43         Array<char> *getData();
44         bool isLastPart();
45         int64_t getMachineId();
46         int64_t getClientLocalSequenceNumber();
47         int64_t getSequenceNumber();
48         void setSequenceNumber(int64_t _sequenceNumber);
49         void encode(ByteBuffer *bb);
50         char getType();
51         Entry *getCopy(Slot *s);
52 };
53
54 Entry *TransactionPart_decode(Slot *s, ByteBuffer *bb);
55 #endif