]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/common/AsyncOpTracker.h
import 15.2.2 octopus source
[ceph.git] / ceph / src / common / AsyncOpTracker.h
index d913032aa56a0af74ee43277a413a890c28b91f9..dfa913ad4a3a0f5ff6bcecaa8134f4881fe071a4 100644 (file)
@@ -5,8 +5,7 @@
 #define CEPH_ASYNC_OP_TRACKER_H
 
 #include "common/ceph_mutex.h"
-
-struct Context;
+#include "include/Context.h"
 
 class AsyncOpTracker {
 public:
@@ -27,4 +26,23 @@ private:
 
 };
 
+class C_TrackedOp : public Context {
+public:
+  C_TrackedOp(AsyncOpTracker& async_op_tracker, Context* on_finish)
+    : m_async_op_tracker(async_op_tracker), m_on_finish(on_finish) {
+    m_async_op_tracker.start_op();
+  }
+
+  void finish(int r) override {
+    if (m_on_finish != nullptr) {
+      m_on_finish->complete(r);
+    }
+    m_async_op_tracker.finish_op();
+  }
+
+private:
+  AsyncOpTracker& m_async_op_tracker;
+  Context* m_on_finish;
+};
+
 #endif // CEPH_ASYNC_OP_TRACKER_H