forked from iabudiab/ObjectiveRocks
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathRocksDBCallbackMergeOperator.cpp
More file actions
56 lines (49 loc) · 1.66 KB
/
Copy pathRocksDBCallbackMergeOperator.cpp
File metadata and controls
56 lines (49 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//
// RocksDBCallbackMergeOperator.cpp
// ObjectiveRocks
//
// Created by Iska on 15/12/14.
// Copyright (c) 2014 BrainCookie. All rights reserved.
//
#include "RocksDBCallbackMergeOperator.h"
class RocksDBCallbackMergeOperatorImpl : public rocksdb::MergeOperator
{
private:
void* instance;
const char* name;
PartialMergeCallback partialMergeCallback;
FullMergeCallback fullMergeCallback;
public:
RocksDBCallbackMergeOperatorImpl(void* instance,
const char* name,
PartialMergeCallback partialMergeCallback,
FullMergeCallback fullMergeCallback):
instance(instance), name(name), partialMergeCallback(partialMergeCallback), fullMergeCallback(fullMergeCallback) {}
const char* Name() const
{
return name;
}
virtual bool FullMerge(const rocksdb::Slice& key,
const rocksdb::Slice* existing_value,
const std::deque<std::string>& operand_list,
std::string* new_value,
rocksdb::Logger* logger) const
{
return fullMergeCallback(instance, key, existing_value, operand_list, new_value, logger);
}
virtual bool PartialMerge(const rocksdb::Slice& key,
const rocksdb::Slice& left_operand,
const rocksdb::Slice& right_operand,
std::string* new_value,
rocksdb::Logger* logger) const
{
return partialMergeCallback(instance, key, left_operand, right_operand, new_value, logger);
}
};
rocksdb::MergeOperator* RocksDBCallbackMergeOperator(void* instance,
const char* name,
PartialMergeCallback partialMergeCallback,
FullMergeCallback fullMergeCallback)
{
return new RocksDBCallbackMergeOperatorImpl(instance, name, partialMergeCallback, fullMergeCallback);
}