tabbing
[iotcloud.git] / version2 / src / C / Commit.h
1 #ifndef COMMIT_H
2 #define COMMIT_H
3 #include "common.h"
4
5 class Commit {
6 private:
7         Hashtable<int32_t, CommitPart *, int32_t> *parts;
8         Hashset<int32_t, int32_t> *missingParts;
9         bool fldisComplete;
10         bool hasLastPart;
11         Hashset<KeyValue *> *keyValueUpdateSet;
12         bool isDead;
13         int64_t sequenceNumber;
14         int64_t machineId;
15         int64_t transactionSequenceNumber;
16         Hashset<IoTString *> *liveKeys;
17         Array<char> *convertDataToBytes();
18         void setKVsMap(Hashtable<IoTString *, KeyValue *> *newKVs);
19
20 public:
21         Commit();
22         Commit(int64_t _sequenceNumber, int64_t _machineId, int64_t _transactionSequenceNumber);
23
24         void addPartDecode(CommitPart *newPart);
25         int64_t getSequenceNumber();
26         int64_t getTransactionSequenceNumber();
27         Hashtable<int32_t, CommitPart *, int32_t> *getParts();
28         void addKV(KeyValue *kv);
29         void invalidateKey(IoTString *key);
30         Hashset<KeyValue *> *getKeyValueUpdateSet();
31         int32_t getNumberOfParts();
32         int64_t getMachineId() { return machineId; }
33         bool isComplete() { return fldisComplete; }
34         bool isLive() { return !isDead; }
35         void setDead();
36         CommitPart *getPart(int32_t index);
37         void createCommitParts();
38         void decodeCommitData();
39 };
40
41 Commit *Commit_merge(Commit *newer, Commit *older, int64_t newSequenceNumber);
42 #endif