#define CEPH_RBD_MIRROR_THREADS_H
#include "include/common_fwd.h"
+#include "include/rados/librados_fwd.hpp"
#include "common/ceph_mutex.h"
+#include <memory>
-class ContextWQ;
class SafeTimer;
class ThreadPool;
-namespace librbd { struct ImageCtx; }
+namespace librbd {
+struct AsioEngine;
+struct ImageCtx;
+namespace asio { struct ContextWQ; }
+} // namespace librbd
namespace rbd {
namespace mirror {
template <typename ImageCtxT = librbd::ImageCtx>
-struct Threads {
- ThreadPool *thread_pool = nullptr;
- ContextWQ *work_queue = nullptr;
+class Threads {
+public:
+ librbd::AsioEngine* asio_engine = nullptr;
+ librbd::asio::ContextWQ* work_queue = nullptr;
SafeTimer *timer = nullptr;
- ceph::mutex timer_lock =
- ceph::make_mutex("Threads::timer_lock");
+ ceph::mutex timer_lock = ceph::make_mutex("Threads::timer_lock");
- explicit Threads(CephContext *cct);
+ explicit Threads(std::shared_ptr<librados::Rados>& rados);
Threads(const Threads&) = delete;
Threads& operator=(const Threads&) = delete;