From d99b61ac14abf2ed72c44ba9805df825d319390f Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Tue, 26 Mar 2013 15:15:00 -0700 Subject: OpTracker: give TrackedOp a default dump() function Signed-off-by: Greg Farnum --- src/common/TrackedOp.cc | 32 ++++++++++++++++++++++++++++++++ src/common/TrackedOp.h | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index 4ed9f20d1fc..019a31ce407 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -247,3 +247,35 @@ void TrackedOp::mark_event(const string &event) } tracker->mark_event(this, event); } + +void TrackedOp::dump(utime_t now, Formatter *f) const +{ + Message *m = request; + stringstream name; + m->print(name); + f->dump_string("description", name.str().c_str()); // this OpRequest + f->dump_stream("received_at") << get_arrived(); + f->dump_float("age", now - get_arrived()); + f->dump_float("duration", get_duration()); + f->dump_string("current_state", state_string()); + if (m->get_orig_source().is_client()) { + f->open_object_section("client_info"); + stringstream client_name; + client_name << m->get_orig_source(); + f->dump_string("client", client_name.str()); + f->dump_int("tid", m->get_tid()); + f->close_section(); // client_info + } + { + f->open_array_section("events"); + for (list >::const_iterator i = events.begin(); + i != events.end(); + ++i) { + f->open_object_section("event"); + f->dump_stream("time") << i->first; + f->dump_string("event", i->second); + f->close_section(); + } + f->close_section(); + } +} diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index 9007a4d5bd2..3344301c7c8 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -155,7 +155,7 @@ public: virtual const char *state_string() const { return events.rbegin()->second.c_str(); } - virtual void dump(utime_t now, Formatter *f) const = 0; + virtual void dump(utime_t now, Formatter *f) const; }; #endif -- cgit v1.2.1