neorados::RADOS::make_with_librados(*rados))),
m_cct(m_rados_api->cct()),
m_io_context(m_rados_api->get_io_context()),
- m_api_strand(std::make_unique<boost::asio::io_context::strand>(
- m_io_context)),
+ m_api_strand(std::make_unique<boost::asio::strand<executor_type>>(
+ boost::asio::make_strand(m_io_context))),
m_context_wq(std::make_unique<asio::ContextWQ>(m_cct, m_io_context)) {
ldout(m_cct, 20) << dendl;
#include <memory>
#include <boost/asio/dispatch.hpp>
#include <boost/asio/io_context.hpp>
-#include <boost/asio/io_context_strand.hpp>
+#include <boost/asio/strand.hpp>
#include <boost/asio/post.hpp>
struct Context;
return m_io_context.get_executor();
}
- inline boost::asio::io_context::strand& get_api_strand() {
+ inline boost::asio::strand<executor_type>& get_api_strand() {
// API client callbacks should never fire concurrently
return *m_api_strand;
}
CephContext* m_cct;
boost::asio::io_context& m_io_context;
- std::unique_ptr<boost::asio::io_context::strand> m_api_strand;
+ std::unique_ptr<boost::asio::strand<executor_type>> m_api_strand;
std::unique_ptr<asio::ContextWQ> m_context_wq;
};
ContextWQ::ContextWQ(CephContext* cct, boost::asio::io_context& io_context)
: m_cct(cct), m_io_context(io_context),
- m_strand(std::make_unique<boost::asio::io_context::strand>(io_context)),
+ m_strand(std::make_unique<boost::asio::strand<executor_type>>(
+ boost::asio::make_strand(io_context))),
m_queued_ops(0) {
ldout(m_cct, 20) << dendl;
}
#include <atomic>
#include <memory>
#include <boost/asio/io_context.hpp>
-#include <boost/asio/io_context_strand.hpp>
+#include <boost/asio/strand.hpp>
#include <boost/asio/post.hpp>
namespace librbd {
private:
CephContext* m_cct;
boost::asio::io_context& m_io_context;
- std::unique_ptr<boost::asio::io_context::strand> m_strand;
+ using executor_type = boost::asio::io_context::executor_type;
+ std::unique_ptr<boost::asio::strand<executor_type>> m_strand;
std::atomic<uint64_t> m_queued_ops;
public:
ClusterCache(QCOWFormat* qcow_format)
: qcow_format(qcow_format),
- m_strand(*qcow_format->m_image_ctx->asio_engine) {
+ m_strand(boost::asio::make_strand(
+ *qcow_format->m_image_ctx->asio_engine)) {
}
void get_cluster(uint64_t cluster_offset, uint64_t cluster_length,
typedef std::list<Completion> Completions;
QCOWFormat* qcow_format;
- boost::asio::io_context::strand m_strand;
+ boost::asio::strand<boost::asio::io_context::executor_type> m_strand;
std::shared_ptr<Cluster> cluster;
std::unordered_map<uint64_t, Completions> cluster_completions;
public:
L2TableCache(QCOWFormat* qcow_format)
: qcow_format(qcow_format),
- m_strand(*qcow_format->m_image_ctx->asio_engine),
+ m_strand(boost::asio::make_strand(
+ *qcow_format->m_image_ctx->asio_engine)),
l2_cache_entries(QCOW_L2_CACHE_SIZE) {
}
private:
QCOWFormat* qcow_format;
- boost::asio::io_context::strand m_strand;
+ boost::asio::strand<boost::asio::io_context::executor_type> m_strand;
struct Request {
const LookupTable* l1_table;
const SourceSpecBuilder<I>* source_spec_builder)
: m_image_ctx(image_ctx), m_json_object(json_object),
m_source_spec_builder(source_spec_builder),
- m_strand(*image_ctx->asio_engine) {
+ m_strand(boost::asio::make_strand(*image_ctx->asio_engine)) {
}
template <typename I>
#include "librbd/migration/QCOW.h"
#include "acconfig.h"
#include "json_spirit/json_spirit.h"
-#include <boost/asio/io_context_strand.hpp>
+#include <boost/asio/io_context.hpp>
+#include <boost/asio/strand.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <deque>
#include <vector>
json_spirit::mObject m_json_object;
const SourceSpecBuilder<ImageCtxT>* m_source_spec_builder;
- boost::asio::io_context::strand m_strand;
+ boost::asio::strand<boost::asio::io_context::executor_type> m_strand;
std::shared_ptr<StreamInterface> m_stream;
bufferlist m_bl;