diff options
Diffstat (limited to 'src/base/statistics.cc')
-rw-r--r-- | src/base/statistics.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/base/statistics.cc b/src/base/statistics.cc index 2bd34d3db..5ab837410 100644 --- a/src/base/statistics.cc +++ b/src/base/statistics.cc @@ -462,10 +462,32 @@ Formula::str() const return root ? root->str() : ""; } +Handler resetHandler = NULL; +Handler dumpHandler = NULL; + +void +registerHandlers(Handler reset_handler, Handler dump_handler) +{ + resetHandler = reset_handler; + dumpHandler = dump_handler; +} + CallbackQueue dumpQueue; CallbackQueue resetQueue; void +processResetQueue() +{ + resetQueue.process(); +} + +void +processDumpQueue() +{ + dumpQueue.process(); +} + +void registerResetCallback(Callback *cb) { resetQueue.add(cb); @@ -489,6 +511,24 @@ enable() } void +dump() +{ + if (dumpHandler) + dumpHandler(); + else + fatal("No registered Stats::dump handler"); +} + +void +reset() +{ + if (resetHandler) + resetHandler(); + else + fatal("No registered Stats::reset handler"); +} + +void registerDumpCallback(Callback *cb) { dumpQueue.add(cb); |