}
journal::ImageClientMeta *image_client_meta =
- boost::get<journal::ImageClientMeta>(&client_data.client_meta);
+ std::get_if<journal::ImageClientMeta>(&client_data.client_meta);
if (image_client_meta == nullptr) {
lderr(cct) << this << " OpenJournalerRequest::" << __func__ << ": "
<< "failed to get client meta" << dendl;
}
journal::ImageClientMeta *image_client_meta =
- boost::get<journal::ImageClientMeta>(&client_data.client_meta);
+ std::get_if<journal::ImageClientMeta>(&client_data.client_meta);
if (image_client_meta == nullptr) {
lderr(cct) << this << " " << __func__ << ": "
<< "failed to access image client meta struct" << dendl;
}
journal::ImageClientMeta *image_client_meta =
- boost::get<journal::ImageClientMeta>(&client_data.client_meta);
+ std::get_if<journal::ImageClientMeta>(&client_data.client_meta);
if (image_client_meta == nullptr) {
lderr(cct) << this << " " << __func__ << ": "
<< "failed to extract client meta data" << dendl;
return;
}
- boost::apply_visitor(EventVisitor(this, on_ready, on_safe),
- event_entry.event);
+ std::visit(EventVisitor(this, on_ready, on_safe),
+ event_entry.event);
}
template <typename I>
namespace {
template <typename E>
-class GetTypeVisitor : public boost::static_visitor<E> {
+class GetTypeVisitor {
public:
template <typename T>
inline E operator()(const T&) const {
}
};
-class EncodeVisitor : public boost::static_visitor<void> {
+class EncodeVisitor {
public:
explicit EncodeVisitor(bufferlist &bl) : m_bl(bl) {
}
bufferlist &m_bl;
};
-class DecodeVisitor : public boost::static_visitor<void> {
+class DecodeVisitor {
public:
DecodeVisitor(__u8 version, bufferlist::const_iterator &iter)
: m_version(version), m_iter(iter) {
bufferlist::const_iterator &m_iter;
};
-class DumpVisitor : public boost::static_visitor<void> {
+class DumpVisitor {
public:
explicit DumpVisitor(Formatter *formatter, const std::string &key)
: m_formatter(formatter), m_key(key) {}
}
EventType EventEntry::get_event_type() const {
- return boost::apply_visitor(GetTypeVisitor<EventType>(), event);
+ return std::visit(GetTypeVisitor<EventType>(), event);
}
void EventEntry::encode(bufferlist& bl) const {
ENCODE_START(5, 1, bl);
- boost::apply_visitor(EncodeVisitor(bl), event);
+ std::visit(EncodeVisitor(bl), event);
ENCODE_FINISH(bl);
encode_metadata(bl);
}
break;
}
- boost::apply_visitor(DecodeVisitor(struct_v, it), event);
+ std::visit(DecodeVisitor(struct_v, it), event);
DECODE_FINISH(it);
if (struct_v >= 4) {
decode_metadata(it);
}
void EventEntry::dump(Formatter *f) const {
- boost::apply_visitor(DumpVisitor(f, "event_type"), event);
+ std::visit(DumpVisitor(f, "event_type"), event);
f->dump_stream("timestamp") << timestamp;
}
}
ClientMetaType ClientData::get_client_meta_type() const {
- return boost::apply_visitor(GetTypeVisitor<ClientMetaType>(), client_meta);
+ return std::visit(GetTypeVisitor<ClientMetaType>(), client_meta);
}
void ClientData::encode(bufferlist& bl) const {
ENCODE_START(2, 1, bl);
- boost::apply_visitor(EncodeVisitor(bl), client_meta);
+ std::visit(EncodeVisitor(bl), client_meta);
ENCODE_FINISH(bl);
}
break;
}
- boost::apply_visitor(DecodeVisitor(struct_v, it), client_meta);
+ std::visit(DecodeVisitor(struct_v, it), client_meta);
DECODE_FINISH(it);
}
void ClientData::dump(Formatter *f) const {
- boost::apply_visitor(DumpVisitor(f, "client_meta_type"), client_meta);
+ std::visit(DumpVisitor(f, "client_meta_type"), client_meta);
}
void ClientData::generate_test_instances(std::list<ClientData *> &o) {
#include "librbd/Types.h"
#include <iosfwd>
#include <list>
+#include <variant>
#include <boost/none.hpp>
#include <boost/optional.hpp>
-#include <boost/variant.hpp>
#include <boost/mpl/vector.hpp>
namespace ceph {
void dump(Formatter *f) const;
};
-typedef boost::mpl::vector<AioDiscardEvent,
+using Event = std::variant<AioDiscardEvent,
AioWriteEvent,
AioFlushEvent,
OpFinishEvent,
MetadataRemoveEvent,
AioWriteSameEvent,
AioCompareAndWriteEvent,
- UnknownEvent> EventVector;
-typedef boost::make_variant_over<EventVector>::type Event;
+ UnknownEvent>;
struct EventEntry {
static uint32_t get_fixed_size() {
void dump(Formatter *f) const;
};
-typedef boost::variant<ImageClientMeta,
- MirrorPeerClientMeta,
- CliClientMeta,
- UnknownClientMeta> ClientMeta;
+using ClientMeta = std::variant<ImageClientMeta,
+ MirrorPeerClientMeta,
+ CliClientMeta,
+ UnknownClientMeta>;
struct ClientData {
ClientData() {
m_ret[client.id] = 0;
journal::MirrorPeerClientMeta client_meta =
- boost::get<journal::MirrorPeerClientMeta>(client_data.client_meta);
+ std::get<journal::MirrorPeerClientMeta>(client_data.client_meta);
for (const auto& sync : client_meta.sync_points) {
send_remove_snap(client.id, sync.snap_namespace, sync.snap_name);
#include "journal/ReplayHandler.h"
#include "journal/Settings.h"
#include <list>
-#include <boost/variant.hpp>
void register_test_journal_entries() {
}
event_entry.get_event_type());
librbd::journal::AioWriteEvent aio_write_event =
- boost::get<librbd::journal::AioWriteEvent>(event_entry.event);
+ std::get<librbd::journal::AioWriteEvent>(event_entry.event);
ASSERT_EQ(123U, aio_write_event.offset);
ASSERT_EQ(buffer.size(), aio_write_event.length);
event_entry.get_event_type());
librbd::journal::AioDiscardEvent aio_discard_event =
- boost::get<librbd::journal::AioDiscardEvent>(event_entry.event);
+ std::get<librbd::journal::AioDiscardEvent>(event_entry.event);
ASSERT_EQ(123U, aio_discard_event.offset);
ASSERT_EQ(234U, aio_discard_event.length);
}
event_entry.get_event_type());
librbd::journal::AioDiscardEvent aio_discard_event =
- boost::get<librbd::journal::AioDiscardEvent>(event_entry.event);
+ std::get<librbd::journal::AioDiscardEvent>(event_entry.event);
ASSERT_EQ(offset, aio_discard_event.offset);
ASSERT_EQ(size, aio_discard_event.length);
ASSERT_EQ(expected_snap_seqs, m_client_meta.snap_seqs);
librbd::journal::SnapRenameEvent *event =
- boost::get<librbd::journal::SnapRenameEvent>(&event_entry.event);
+ std::get_if<librbd::journal::SnapRenameEvent>(&event_entry.event);
ASSERT_EQ(6U, event->snap_id);
}
ASSERT_EQ(-ENOENT, ctx.wait());
librbd::journal::SnapRenameEvent *event =
- boost::get<librbd::journal::SnapRenameEvent>(&event_entry.event);
+ std::get_if<librbd::journal::SnapRenameEvent>(&event_entry.event);
ASSERT_EQ(CEPH_NOSNAP, event->snap_id);
}
ASSERT_EQ(expected_snap_seqs, m_client_meta.snap_seqs);
librbd::journal::SnapRenameEvent *event =
- boost::get<librbd::journal::SnapRenameEvent>(&event_entry.event);
+ std::get_if<librbd::journal::SnapRenameEvent>(&event_entry.event);
ASSERT_EQ(6U, event->snap_id);
}
return false;
}
- auto local_client_meta = boost::get<librbd::journal::MirrorPeerClientMeta>(
+ auto local_client_meta = std::get_if<librbd::journal::MirrorPeerClientMeta>(
&client_data.client_meta);
if (local_client_meta == nullptr) {
derr << "unknown peer registration" << dendl;
#include "librbd/Utils.h"
#include "librbd/asio/ContextWQ.h"
#include "librbd/journal/Types.h"
-#include <boost/variant.hpp>
#include <shared_mutex> // for std::shared_lock
m_snap_seqs = m_client_meta->snap_seqs;
m_snap_seqs_updated = prune_snap_map(&m_snap_seqs);
- int r = boost::apply_visitor(PreprocessEventVisitor(this),
- m_event_entry->event);
+ int r = std::visit(PreprocessEventVisitor(this),
+ m_event_entry->event);
if (r < 0) {
finish(r);
return;
}
librbd::journal::ImageClientMeta *client_meta =
- boost::get<librbd::journal::ImageClientMeta>(&client_data.client_meta);
+ std::get_if<librbd::journal::ImageClientMeta>(&client_data.client_meta);
if (client_meta == nullptr) {
derr << "unknown remote client registration" << dendl;
finish(-EINVAL);