#define CEPH_ASYNC_OP_TRACKER_H
#include "common/ceph_mutex.h"
-
-struct Context;
+#include "include/Context.h"
class AsyncOpTracker {
public:
};
+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