From: Kefu Chai Date: Thu, 8 May 2025 06:58:36 +0000 (+0800) Subject: cephfs, tools/cephfs_mirror: migrate from boost::variant to std::variant X-Git-Tag: testing/wip-vshankar-testing-20250519.052411-debug~2^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=92e41e086a5d604a10cfba022f74c7f4b942d207;p=ceph-ci.git cephfs, tools/cephfs_mirror: migrate from boost::variant to std::variant 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 --- diff --git a/src/include/cephfs/metrics/Types.h b/src/include/cephfs/metrics/Types.h index af377db606e..5bc725c02cc 100644 --- a/src/include/cephfs/metrics/Types.h +++ b/src/include/cephfs/metrics/Types.h @@ -5,7 +5,7 @@ #define CEPH_INCLUDE_CEPHFS_METRICS_TYPES_H #include -#include +#include #include "common/Formatter.h" #include "include/buffer_fwd.h" @@ -552,17 +552,17 @@ struct UnknownPayload : public ClientMetricPayloadBase { } }; -typedef boost::variant ClientMetricPayload; +typedef std::variant ClientMetricPayload; // metric update message sent by clients struct ClientMetricMessage { @@ -571,7 +571,7 @@ public: : payload(payload) { } - class EncodePayloadVisitor : public boost::static_visitor { + class EncodePayloadVisitor { public: explicit EncodePayloadVisitor(bufferlist &bl) : m_bl(bl) { } @@ -587,7 +587,7 @@ public: bufferlist &m_bl; }; - class DecodePayloadVisitor : public boost::static_visitor { + 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 { + class DumpPayloadVisitor { public: explicit DumpPayloadVisitor(Formatter *formatter) : m_formatter(formatter) { } @@ -617,7 +617,7 @@ public: Formatter *m_formatter; }; - class PrintPayloadVisitor : public boost::static_visitor { + 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& ls) { @@ -693,7 +693,7 @@ public: } void print(std::ostream *out) const { - apply_visitor(PrintPayloadVisitor(out), payload); + std::visit(PrintPayloadVisitor(out), payload); } ClientMetricPayload payload; diff --git a/src/mds/MetricsHandler.cc b/src/mds/MetricsHandler.cc index 2977a5947bc..ae16e8962b8 100644 --- a/src/mds/MetricsHandler.cc +++ b/src/mds/MetricsHandler.cc @@ -343,7 +343,7 @@ void MetricsHandler::handle_client_metrics(const cref_t &m) { } for (auto &metric : m->updates) { - boost::apply_visitor(HandlePayloadVisitor(this, session), metric.payload); + std::visit(HandlePayloadVisitor(this, session), metric.payload); } } diff --git a/src/tools/cephfs_mirror/ServiceDaemon.cc b/src/tools/cephfs_mirror/ServiceDaemon.cc index c19e121beae..7d8227f8845 100644 --- a/src/tools/cephfs_mirror/ServiceDaemon.cc +++ b/src/tools/cephfs_mirror/ServiceDaemon.cc @@ -19,7 +19,7 @@ namespace mirror { namespace { -struct AttributeDumpVisitor : public boost::static_visitor { +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 diff --git a/src/tools/cephfs_mirror/Types.h b/src/tools/cephfs_mirror/Types.h index ac52552a638..e57f7b84664 100644 --- a/src/tools/cephfs_mirror/Types.h +++ b/src/tools/cephfs_mirror/Types.h @@ -7,19 +7,18 @@ #include #include #include +#include #include "include/rados/librados.hpp" #include "include/cephfs/libcephfs.h" #include "mds/mdstypes.h" -#include - namespace cephfs { namespace mirror { static const std::string CEPHFS_MIRROR_OBJECT("cephfs_mirror"); -typedef boost::variant AttributeValue; +typedef std::variant AttributeValue; typedef std::map Attributes; // distinct filesystem identifier