]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson: define encode_key() with IsFullKey constrait
authorKefu Chai <tchaikov@gmail.com>
Thu, 18 Aug 2022 15:10:21 +0000 (23:10 +0800)
committerKefu Chai <tchaikov@gmail.com>
Thu, 18 Aug 2022 15:10:23 +0000 (23:10 +0800)
also, let the compiler to deduce the type of the template parameter,
less repeating and less error-prone this way.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
src/crimson/os/seastore/onode_manager/staged-fltree/node_extent_accessor.h
src/crimson/os/seastore/onode_manager/staged-fltree/stages/key_layout.h

index aae6018074be8bd14c08566aa4352ab1f8124ba0..1bd532c4ac1b70a4dd9e5ed97b5bd3858d3a07d6 100644 (file)
@@ -42,7 +42,7 @@ class DeltaRecorderT final: public DeltaRecorder {
       const match_stage_t& insert_stage,
       const node_offset_t& insert_size) {
     ceph::encode(node_delta_op_t::INSERT, encoded);
-    encode_key<KT>(key, encoded);
+    encode_key(key, encoded);
     encode_value(value, encoded);
     insert_pos.encode(encoded);
     ceph::encode(insert_stage, encoded);
@@ -67,7 +67,7 @@ class DeltaRecorderT final: public DeltaRecorder {
       const char* p_node_start) {
     ceph::encode(node_delta_op_t::SPLIT_INSERT, encoded);
     split_at.encode(p_node_start, encoded);
-    encode_key<KT>(key, encoded);
+    encode_key(key, encoded);
     encode_value(value, encoded);
     insert_pos.encode(encoded);
     ceph::encode(insert_stage, encoded);
index 5309e9a111b840ce3781a6659ff0fab1ece76f0c..b2224455c8be4b0f01fe6d23d8993f3959b33545 100644 (file)
@@ -733,8 +733,11 @@ class key_view_t {
   const snap_gen_t* p_snap_gen = nullptr;
 };
 
-template <KeyT KT>
-void encode_key(const full_key_t<KT>& key, ceph::bufferlist& bl) {
+template<typename T>
+concept IsFullKey = std::same_as<T, key_hobj_t> || std::same_as<T, key_view_t>;
+
+template <IsFullKey Key>
+void encode_key(const Key& key, ceph::bufferlist& bl) {
   ceph::encode(key.shard(), bl);
   ceph::encode(key.pool(), bl);
   ceph::encode(key.crush(), bl);
@@ -744,9 +747,6 @@ void encode_key(const full_key_t<KT>& key, ceph::bufferlist& bl) {
   ceph::encode(key.gen(), bl);
 }
 
-template<typename T>
-concept IsFullKey = std::same_as<T, key_hobj_t> || std::same_as<T, key_view_t>;
-
 template<IsFullKey LHS, IsFullKey RHS>
 std::strong_ordering operator<=>(const LHS& lhs, const RHS& rhs) noexcept {
   auto ret = lhs.shard() <=> rhs.shard();