]> git.proxmox.com Git - ceph.git/blob - ceph/src/common/AsyncOpTracker.h
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / common / AsyncOpTracker.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #ifndef CEPH_ASYNC_OP_TRACKER_H
5 #define CEPH_ASYNC_OP_TRACKER_H
6
7 #include "include/int_types.h"
8 #include "common/Mutex.h"
9
10 struct Context;
11
12 class AsyncOpTracker {
13 public:
14 AsyncOpTracker();
15 ~AsyncOpTracker();
16
17 void start_op();
18 void finish_op();
19
20 void wait_for_ops(Context *on_finish);
21
22 bool empty();
23
24 private:
25 Mutex m_lock;
26 uint32_t m_pending_ops = 0;
27 Context *m_on_finish = nullptr;
28
29 };
30
31 #endif // CEPH_ASYNC_OP_TRACKER_H