edits
[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         
24         void addPartDecode(CommitPart * newPart);
25         int64_t getSequenceNumber();
26         int64_t getTransactionSequenceNumber();
27         Hashtable<int32_t, CommitPart *> *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