summaryrefslogtreecommitdiffstats
path: root/src/tools/rbd_mirror/Threads.h
blob: f52e8837d35a1e0ddf2a1b1786d92e00e9a5a3b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
// vim: ts=8 sw=2 smarttab

#ifndef CEPH_RBD_MIRROR_THREADS_H
#define CEPH_RBD_MIRROR_THREADS_H

#include "common/Mutex.h"

class CephContext;
class ContextWQ;
class SafeTimer;
class ThreadPool;

namespace librbd { struct ImageCtx; }

namespace rbd {
namespace mirror {

template <typename ImageCtxT = librbd::ImageCtx>
struct Threads {
  ThreadPool *thread_pool = nullptr;
  ContextWQ *work_queue = nullptr;

  SafeTimer *timer = nullptr;
  Mutex timer_lock;

  explicit Threads(CephContext *cct);
  Threads(const Threads&) = delete;
  Threads& operator=(const Threads&) = delete;

  ~Threads();
};

} // namespace mirror
} // namespace rbd

extern template class rbd::mirror::Threads<librbd::ImageCtx>;

#endif // CEPH_RBD_MIRROR_THREADS_H