diff options
Diffstat (limited to 'src/common/TrackedOp.h')
-rw-r--r-- | src/common/TrackedOp.h | 34 |
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; |