static void ProgressCallback(Object *object, const EventObject &event, void *clientdata) { ProcessObject *process = dynamic_cast<ProcessObject *>(object); Reporter *reporter = reinterpret_cast<Reporter *>(clientdata); if (process && reporter) { float progress = process->GetProgress(); reporter->report(int(progress * 100.f)); } }
void report(Diagnostic* diagnostic) { std::lock_guard<std::mutex> guard(lock_); intermittent_reports_.push_back(diagnostic); if(reporter_) { reporter_->report(); } }
void check_report() { Reporter sw; ex::sleep_for<typename Reporter::clock>(milliseconds(100)); sw.report(); }