tabbing
[iotcloud.git] / version2 / src / C / Transaction.h
1 #ifndef TRANSACTION_H
2 #define TRANSACTION_H
3 #include "common.h"
4 #include "Pair.h"
5
6 class Transaction {
7 private:
8         Hashtable<int32_t, TransactionPart *> *parts;
9         Hashset<int32_t> *missingParts;
10         Vector<int32_t> *partsPendingSend;
11         bool fldisComplete;
12         bool hasLastPart;
13         Hashset<KeyValue *> *keyValueGuardSet;
14         Hashset<KeyValue *> *keyValueUpdateSet;
15         bool isDead;
16         int64_t sequenceNumber;
17         int64_t clientLocalSequenceNumber;
18         int64_t arbitratorId;
19         int64_t machineId;
20         Pair<uint64_t, uint64_t> *transactionId;
21         int nextPartToSend;
22         bool flddidSendAPartToServer;
23         TransactionStatus *transactionStatus;
24         bool hadServerFailure;
25         void decodeTransactionData();
26
27 public:
28         Transaction();
29         void addPartEncode(TransactionPart *newPart);
30         void addPartDecode(TransactionPart *newPart);
31         void addUpdateKV(KeyValue *kv);
32         void addGuardKV(KeyValue *kv);
33         int64_t getSequenceNumber();
34         void setSequenceNumber(int64_t _sequenceNumber);
35         int64_t getClientLocalSequenceNumber();
36         Hashtable<int32_t, TransactionPart *> *getParts();
37         bool didSendAPartToServer();
38         void resetNextPartToSend();
39         TransactionPart *getNextPartToSend();
40         void setServerFailure();
41         bool getServerFailure();
42         void resetServerFailure();
43         void setTransactionStatus(TransactionStatus *_transactionStatus);
44         TransactionStatus *getTransactionStatus();
45         void removeSentParts(Vector<int32_t> *sentParts);
46         bool didSendAllParts();
47         Hashset<KeyValue *> *getKeyValueUpdateSet();
48         int getNumberOfParts();
49         int64_t getMachineId();
50         int64_t getArbitrator();
51         bool isComplete();
52         Pair<int64_t, int64_t> *getId();
53         void setDead();
54         TransactionPart *getPart(int32_t index);
55         bool evaluateGuard(Hashtable<IoTString *, KeyValue *> *committedKeyValueTable, Hashtable<IoTString *, KeyValue *> *speculatedKeyValueTable, Hashtable<IoTString *, KeyValue *> *pendingTransactionSpeculatedKeyValueTable);
56 };
57 #endif