]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
cephfs, tools/cephfs_mirror: migrate from boost::variant to std::variant
authorKefu Chai <tchaikov@gmail.com>
Thu, 8 May 2025 06:58:36 +0000 (14:58 +0800)
committerKefu Chai <kchai@redhat.com>
Fri, 9 May 2025 14:18:55 +0000 (22:18 +0800)
Replacing boost::variant with std::variant throughout the cephfs related
codebase. This change is part of our ongoing effort to reduce
third-party dependencies by leveraging C++ standard library
alternatives where possible.

Benefits include:
- Improved code readability and maintainability
- Reduced external dependency surface
- More consistent API usage with other components

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
src/include/cephfs/metrics/Types.h
src/mds/MetricsHandler.cc
src/tools/cephfs_mirror/ServiceDaemon.cc
src/tools/cephfs_mirror/Types.h

index af377db606e2b54545d6ba8220c28006a92af310..5bc725c02cc86be074ff1a6c77591118c06e5af1 100644 (file)
@@ -5,7 +5,7 @@
 #define CEPH_INCLUDE_CEPHFS_METRICS_TYPES_H
 
 #include <string>
-#include <boost/variant.hpp>
+#include <variant>
 
 #include "common/Formatter.h"
 #include "include/buffer_fwd.h"
@@ -552,17 +552,17 @@ struct UnknownPayload : public ClientMetricPayloadBase {
   }
 };
 
-typedef boost::variant<CapInfoPayload,
-                       ReadLatencyPayload,
-                       WriteLatencyPayload,
-                       MetadataLatencyPayload,
-                       DentryLeasePayload,
-                       OpenedFilesPayload,
-                       PinnedIcapsPayload,
-                       OpenedInodesPayload,
-                       ReadIoSizesPayload,
-                       WriteIoSizesPayload,
-                       UnknownPayload> ClientMetricPayload;
+typedef std::variant<CapInfoPayload,
+                    ReadLatencyPayload,
+                    WriteLatencyPayload,
+                    MetadataLatencyPayload,
+                    DentryLeasePayload,
+                    OpenedFilesPayload,
+                    PinnedIcapsPayload,
+                    OpenedInodesPayload,
+                    ReadIoSizesPayload,
+                    WriteIoSizesPayload,
+                    UnknownPayload> ClientMetricPayload;
 
 // metric update message sent by clients
 struct ClientMetricMessage {
@@ -571,7 +571,7 @@ public:
     : payload(payload) {
   }
 
-  class EncodePayloadVisitor : public boost::static_visitor<void> {
+  class EncodePayloadVisitor {
   public:
     explicit EncodePayloadVisitor(bufferlist &bl) : m_bl(bl) {
     }
@@ -587,7 +587,7 @@ public:
     bufferlist &m_bl;
   };
 
-  class DecodePayloadVisitor : public boost::static_visitor<void> {
+  class DecodePayloadVisitor {
   public:
     DecodePayloadVisitor(bufferlist::const_iterator &iter) : m_iter(iter) {
     }
@@ -602,7 +602,7 @@ public:
     bufferlist::const_iterator &m_iter;
   };
 
-  class DumpPayloadVisitor : public boost::static_visitor<void> {
+  class DumpPayloadVisitor {
   public:
     explicit DumpPayloadVisitor(Formatter *formatter) : m_formatter(formatter) {
     }
@@ -617,7 +617,7 @@ public:
     Formatter *m_formatter;
   };
 
-  class PrintPayloadVisitor : public boost::static_visitor<void> {
+  class PrintPayloadVisitor {
   public:
     explicit PrintPayloadVisitor(std::ostream *out) : _out(out) {
     }
@@ -636,7 +636,7 @@ public:
   };
 
   void encode(bufferlist &bl) const {
-    boost::apply_visitor(EncodePayloadVisitor(bl), payload);
+    std::visit(EncodePayloadVisitor(bl), payload);
   }
 
   void decode(bufferlist::const_iterator &iter) {
@@ -681,11 +681,11 @@ public:
       break;
     }
 
-    boost::apply_visitor(DecodePayloadVisitor(iter), payload);
+    std::visit(DecodePayloadVisitor(iter), payload);
   }
 
   void dump(Formatter *f) const {
-    apply_visitor(DumpPayloadVisitor(f), payload);
+    std::visit(DumpPayloadVisitor(f), payload);
   }
 
   static void generate_test_instances(std::list<ClientMetricMessage*>& ls) {
@@ -693,7 +693,7 @@ public:
   }
 
   void print(std::ostream *out) const {
-    apply_visitor(PrintPayloadVisitor(out), payload);
+    std::visit(PrintPayloadVisitor(out), payload);
   }
 
   ClientMetricPayload payload;
index 2977a5947bcbcd442cf3b767b7922c890110a05d..ae16e8962b83eb460b3fd0b03d9f218510610758 100644 (file)
@@ -343,7 +343,7 @@ void MetricsHandler::handle_client_metrics(const cref_t<MClientMetrics> &m) {
   }
 
   for (auto &metric : m->updates) {
-    boost::apply_visitor(HandlePayloadVisitor(this, session), metric.payload);
+    std::visit(HandlePayloadVisitor(this, session), metric.payload);
   }
 }
 
index c19e121beae648ab9e165372da45acc18c125355..7d8227f88457823960705ef286fdd25a5266a7fe 100644 (file)
@@ -19,7 +19,7 @@ namespace mirror {
 
 namespace {
 
-struct AttributeDumpVisitor : public boost::static_visitor<void> {
+struct AttributeDumpVisitor {
   ceph::Formatter *f;
   std::string name;
 
@@ -192,7 +192,7 @@ void ServiceDaemon::update_status() {
       f.dump_string("name", filesystem.fs_name);
       for (auto &[attr_name, attr_value] : filesystem.fs_attributes) {
             AttributeDumpVisitor visitor(&f, attr_name);
-            boost::apply_visitor(visitor, attr_value);
+            std::visit(visitor, attr_value);
       }
       f.open_object_section("peers");
       for (auto &[peer, attributes] : filesystem.peer_attributes) {
@@ -201,7 +201,7 @@ void ServiceDaemon::update_status() {
         f.open_object_section("stats");
         for (auto &[attr_name, attr_value] : attributes) {
             AttributeDumpVisitor visitor(&f, attr_name);
-            boost::apply_visitor(visitor, attr_value);
+            std::visit(visitor, attr_value);
         }
         f.close_section(); // stats
         f.close_section(); // peer.uuid
index ac52552a638f2d3775d28bf78488559a42096b06..e57f7b8466461a631f10f331c9942a9fef5c3396 100644 (file)
@@ -7,19 +7,18 @@
 #include <set>
 #include <iostream>
 #include <string_view>
+#include <variant>
 
 #include "include/rados/librados.hpp"
 #include "include/cephfs/libcephfs.h"
 #include "mds/mdstypes.h"
 
-#include <boost/variant/variant.hpp>
-
 namespace cephfs {
 namespace mirror {
 
 static const std::string CEPHFS_MIRROR_OBJECT("cephfs_mirror");
 
-typedef boost::variant<bool, uint64_t, std::string> AttributeValue;
+typedef std::variant<bool, uint64_t, std::string> AttributeValue;
 typedef std::map<std::string, AttributeValue> Attributes;
 
 // distinct filesystem identifier