summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <greg@inktank.com>2013-03-26 15:15:00 -0700
committerGreg Farnum <greg@inktank.com>2013-09-19 18:15:00 -0700
commitd99b61ac14abf2ed72c44ba9805df825d319390f (patch)
tree06c7031ee7ff04b7ee51bd7d30a97c276e99fbfe
parent9e0b5eae57d8bfb3b59e1673dc631a113993f0a2 (diff)
downloadceph-wip-optracker.tar.gz
OpTracker: give TrackedOp a default dump() functionwip-optracker
Signed-off-by: Greg Farnum <greg@inktank.com>
-rw-r--r--src/common/TrackedOp.cc32
-rw-r--r--src/common/TrackedOp.h2
2 files changed, 33 insertions, 1 deletions
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<pair<utime_t, string> >::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