summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/TrackedOp.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h
index 3344301c7c8..12526800156 100644
--- a/src/common/TrackedOp.h
+++ b/src/common/TrackedOp.h
@@ -158,4 +158,17 @@ public:
virtual void dump(utime_t now, Formatter *f) const;
};
+template <typename MessageType>
+class CTOp {
+ TrackedOpRef ref;
+public:
+ CTOp(TrackedOp _ref) :
+ ref(_ref)
+ { assert(MessageType::MESSAGE_TYPE_ID == ref->request->get_type()); }
+ TrackedOp get_op() { return ref; }
+ MessageType * operator*() {
+ return static_cast<MessageType>(ref->request);
+ }
+};
+
#endif