Another file compiles
[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 *> *parts;
8         Hashset<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         void addPartDecode(CommitPart *newPart);
24         int64_t getSequenceNumber();
25         int64_t getTransactionSequenceNumber();
26         Hashtable<int32_t, CommitPart *> *getParts();
27         void addKV(KeyValue *kv);
28         void invalidateKey(IoTString *key);
29         Hashset<KeyValue *> *getKeyValueUpdateSet();
30         int32_t getNumberOfParts();
31         int64_t getMachineId() { return machineId; }
32         bool isComplete() { return fldisComplete; }
33         bool isLive() { return !isDead; }
34         void setDead();
35         CommitPart *getPart(int32_t index);
36         void createCommitParts();
37         void decodeCommitData();
38         friend Commit *Commit_merge(Commit *newer, Commit *older, int64_t newSequenceNumber);
39 };
40
41 Commit *Commit_merge(Commit *newer, Commit *older, int64_t newSequenceNumber);
42 #endif