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 = -1;
12         int64_t machineId = -1;
13         int64_t arbitratorId = -1;
14         int64_t clientLocalSequenceNumber = -1;         // Sequence number of the transaction that this is a part of
15         int partNumber = -1;    // Parts position in the
16         bool isLastPart = false;
17         
18         Pair<int64_t, int64_t> * transactionId = NULL;
19         Pair<int64_t int32_t> * partId = NULL;
20         
21         Array<char> * data = NULL;
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                 isLastPart(_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