#ifndef COMMIT_H
#define COMMIT_H
#include "common.h"
+#include "KeyValue.h"
class Commit {
private:
- Hashtable<int32_t, CommitPart *, int32_t> *parts;
- Hashset<int32_t, int32_t> *missingParts;
+ Vector<CommitPart *> *parts;
+ uint32_t partCount;
+ Hashset<int32_t> *missingParts;
bool fldisComplete;
bool hasLastPart;
- Hashset<KeyValue *> *keyValueUpdateSet;
+ Hashset<KeyValue *, uintptr_t, 0> *keyValueUpdateSet;
bool isDead;
int64_t sequenceNumber;
int64_t machineId;
int64_t transactionSequenceNumber;
Hashset<IoTString *> *liveKeys;
Array<char> *convertDataToBytes();
- void setKVsMap(Hashtable<IoTString *, KeyValue *> *newKVs);
+ void setKVsMap(Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, KeyValueEquals> *newKVs);
public:
Commit();
Commit(int64_t _sequenceNumber, int64_t _machineId, int64_t _transactionSequenceNumber);
-
+ ~Commit();
void addPartDecode(CommitPart *newPart);
int64_t getSequenceNumber();
int64_t getTransactionSequenceNumber();
- Hashtable<int32_t, CommitPart *, int32_t> *getParts();
+ Vector<CommitPart *> *getParts();
void addKV(KeyValue *kv);
void invalidateKey(IoTString *key);
- Hashset<KeyValue *> *getKeyValueUpdateSet();
+ Hashset<KeyValue *, uintptr_t, 0> *getKeyValueUpdateSet();
int32_t getNumberOfParts();
int64_t getMachineId() { return machineId; }
bool isComplete() { return fldisComplete; }
CommitPart *getPart(int32_t index);
void createCommitParts();
void decodeCommitData();
+ friend Commit *Commit_merge(Commit *newer, Commit *older, int64_t newSequenceNumber);
};
Commit *Commit_merge(Commit *newer, Commit *older, int64_t newSequenceNumber);