| 15 | class Int64AddOperator : public rocksdb::AssociativeMergeOperator { |
| 16 | public: |
| 17 | bool Merge( |
| 18 | const rocksdb::Slice& key, const rocksdb::Slice* existing_value, |
| 19 | const rocksdb::Slice& value, std::string* new_value, |
| 20 | rocksdb::Logger* logger |
| 21 | ) const override { |
| 22 | int64_t orig_value = 0; |
| 23 | if (existing_value) { |
| 24 | orig_value = ExternalValue<I64Value>::FromSlice(*existing_value)().i64(); |
| 25 | } |
| 26 | int64_t operand = ExternalValue<I64Value>::FromSlice(value)().i64(); |
| 27 | |
| 28 | ALWAYS_ASSERT(new_value); |
| 29 | new_value->resize(I64Value::MAX_SIZE); |
| 30 | ExternalValue<I64Value>(*new_value)().setI64(orig_value + operand); |
| 31 | |
| 32 | return true; |
| 33 | } |
| 34 | |
| 35 | const char* Name() const override { return "Int64AddOperator"; } |
| 36 | const char* NickName() const override { return "int64add"; } |
no outgoing calls
no test coverage detected