]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rocksdb/utilities/cassandra/merge_operator.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / rocksdb / utilities / cassandra / merge_operator.h
index b5bf7c520eb646611c7db354fd2dc6f17cb6cdde..af8725db7dee65a5f275947501bc5714dd3c02e1 100644 (file)
@@ -6,6 +6,7 @@
 #pragma once
 #include "rocksdb/merge_operator.h"
 #include "rocksdb/slice.h"
+#include "utilities/cassandra/cassandra_options.h"
 
 namespace ROCKSDB_NAMESPACE {
 namespace cassandra {
@@ -14,31 +15,30 @@ namespace cassandra {
  * A MergeOperator for rocksdb that implements Cassandra row value merge.
  */
 class CassandraValueMergeOperator : public MergeOperator {
-public:
- explicit CassandraValueMergeOperator(int32_t gc_grace_period_in_seconds,
-                                      size_t operands_limit = 0)
-     : gc_grace_period_in_seconds_(gc_grace_period_in_seconds),
-       operands_limit_(operands_limit) {}
+ public:
+  explicit CassandraValueMergeOperator(int32_t gc_grace_period_in_seconds,
+                                       size_t operands_limit = 0);
 
- virtual bool FullMergeV2(const MergeOperationInput& merge_in,
-                          MergeOperationOutput* merge_out) const override;
 virtual bool FullMergeV2(const MergeOperationInput& merge_in,
+                           MergeOperationOutput* merge_out) const override;
 
- virtual bool PartialMergeMulti(const Slice& key,
-                                const std::deque<Slice>& operand_list,
-                                std::string* new_value,
-                                Logger* logger) const override;
 virtual bool PartialMergeMulti(const Slice& key,
+                                 const std::deque<Slice>& operand_list,
+                                 std::string* new_value,
+                                 Logger* logger) const override;
 
- virtual const char* Name() const override;
+  const char* Name() const override { return kClassName(); }
+  static const char* kClassName() { return "CassandraValueMergeOperator"; }
 
- virtual bool AllowSingleOperand() const override { return true; }
 virtual bool AllowSingleOperand() const override { return true; }
 
- virtual bool ShouldMerge(const std::vector<Slice>& operands) const override {
-   return operands_limit_ > 0 && operands.size() >= operands_limit_;
- }
+  virtual bool ShouldMerge(const std::vector<Slice>& operands) const override {
+    return options_.operands_limit > 0 &&
+           operands.size() >= options_.operands_limit;
+  }
 
-private:
- int32_t gc_grace_period_in_seconds_;
- size_t operands_limit_;
+ private:
+  CassandraOptions options_;
 };
-} // namespace cassandra
+}  // namespace cassandra
 }  // namespace ROCKSDB_NAMESPACE