diff options
Diffstat (limited to 'src/common/TrackedOp.cc')
-rw-r--r-- | src/common/TrackedOp.cc | 32 |
1 files changed, 32 insertions, 0 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(); + } +} |