summaryrefslogtreecommitdiff
path: root/src/common/TrackedOp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/TrackedOp.h')
-rw-r--r--src/common/TrackedOp.h34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h
index 753331df7f3..835cf86e9d3 100644
--- a/src/common/TrackedOp.h
+++ b/src/common/TrackedOp.h
@@ -22,9 +22,41 @@
#include <tr1/memory>
class TrackedOp {
+protected:
+ list<pair<utime_t, string> > events; /// list of events and their times
+ Mutex lock; /// to protect the events list
public:
- virtual void mark_event(const string &event) = 0;
+ // move these to private once friended OpTracker
+ Message *request;
+ xlist<TrackedOp*>::item xitem;
+ utime_t received_time;
+ // figure out how to get rid of this one?
+ uint8_t warn_interval_multiplier;
+ string current;
+ uint64_t seq;
+
+ TrackedOp(Message *req) :
+ lock("TrackedOp::lock"),
+ request(req),
+ xitem(this),
+ warn_interval_multiplier(1),
+ seq(0) {}
+
virtual ~TrackedOp() {}
+
+ utime_t get_arrived() const {
+ return received_time;
+ }
+ // This function maybe needs some work; assumes last event is completion time
+ double get_duration() const {
+ return events.size() ?
+ (events.rbegin()->first - received_time) :
+ 0.0;
+ }
+
+ virtual void mark_event(const string &event) = 0;
+ virtual const char *state_string() const = 0;
+ virtual void dump(utime_t now, Formatter *f) const = 0;
};
typedef std::tr1::shared_ptr<TrackedOp> TrackedOpRef;