FDR  4.2.7(6ecbe5a21b71ab020e8fcaeccfe5ebaad0599f4f)
progress_reporter.h
1 #pragma once
2 
3 #include <fstream>
4 #include <memory>
5 #include <mutex>
6 
7 namespace FDR
8 {
9 typedef int64_t TaskId;
10 
18 {
19 public:
21  virtual ~ProgressReporter();
22 
23  enum
24  {
25  INVALID_TASK = 0,
26  };
27 
36  virtual void activate();
37 
43  virtual void deactivate();
44 
51  virtual void task_started(TaskId task_id, TaskId parent_task_id, const std::string& task_name);
52 
54  virtual void task_finished(TaskId task_id);
55 
57  virtual void task_message_output(TaskId task_id, const std::string& message);
58 
60  virtual void task_status_updated(TaskId task_id, const std::string& new_status);
61 
62 private:
63  struct Data;
64  std::unique_ptr<Data> data;
65 };
66 
69 {
70 public:
74  FileProgressReporter(const std::string& file_name);
75 
76  void activate() override;
77  void deactivate() override;
78  void task_started(TaskId task_id, TaskId parent_task_id, const std::string& task_name) override;
79  void task_finished(TaskId task_id) override;
80  void task_message_output(TaskId task_id, const std::string& message) override;
81  void task_status_updated(TaskId task_id, const std::string& new_status) override;
82 
83 private:
84  std::mutex mutex;
85  std::ofstream stream;
86 };
87 
90 {
91 public:
92  enum class StreamIdentifier
93  {
94  StdOut,
95  StdErr,
96  };
97 
98  StreamProgressReporter(StreamIdentifier output_stream_identifier);
99 
104  StreamProgressReporter(std::ostream& output_stream);
105 
106  void activate() override;
107  void deactivate() override;
108  void task_started(TaskId task_id, TaskId parent_task_id, const std::string& task_name) override;
109  void task_finished(TaskId task_id) override;
110  void task_message_output(TaskId task_id, const std::string& message) override;
111  void task_status_updated(TaskId task_id, const std::string& new_status) override;
112 
113 private:
114  std::mutex mutex;
115  std::ostream& stream;
116 };
117 
118 } // end FDR
FDR::StreamProgressReporter::deactivate
void deactivate() override
Deactivates this progress reporter, unsubscribing it from updates.
FDR::FileProgressReporter
A simple progress reporter that logs all progress reports to a file.
Definition: progress_reporter.h:69
FDR::StreamProgressReporter::task_status_updated
void task_status_updated(TaskId task_id, const std::string &new_status) override
Called when a task's status message has been updated.
FDR::ProgressReporter::task_message_output
virtual void task_message_output(TaskId task_id, const std::string &message)
Called when a task generates a relevant message.
FDR::FileProgressReporter::task_status_updated
void task_status_updated(TaskId task_id, const std::string &new_status) override
Called when a task's status message has been updated.
FDR::ProgressReporter::deactivate
virtual void deactivate()
Deactivates this progress reporter, unsubscribing it from updates.
FDR::FileProgressReporter::FileProgressReporter
FileProgressReporter(const std::string &file_name)
Creates a new progress reporter.
FDR::ProgressReporter
Recieves status reports from FDR about ongoing tasks.
Definition: progress_reporter.h:18
FDR::StreamProgressReporter::task_started
void task_started(TaskId task_id, TaskId parent_task_id, const std::string &task_name) override
Called when a new task is started.
FDR::StreamProgressReporter::task_message_output
void task_message_output(TaskId task_id, const std::string &message) override
Called when a task generates a relevant message.
FDR::ProgressReporter::task_status_updated
virtual void task_status_updated(TaskId task_id, const std::string &new_status)
Called when a task's status message has been updated.
FDR::FileProgressReporter::task_started
void task_started(TaskId task_id, TaskId parent_task_id, const std::string &task_name) override
Called when a new task is started.
FDR::FileProgressReporter::task_finished
void task_finished(TaskId task_id) override
Called when a new task is finished.
FDR::ProgressReporter::task_started
virtual void task_started(TaskId task_id, TaskId parent_task_id, const std::string &task_name)
Called when a new task is started.
FDR::ProgressReporter::activate
virtual void activate()
Actives this progress reporter, subscribing it to any updates.
FDR::StreamProgressReporter::task_finished
void task_finished(TaskId task_id) override
Called when a new task is finished.
FDR::FileProgressReporter::activate
void activate() override
Actives this progress reporter, subscribing it to any updates.
FDR::FileProgressReporter::task_message_output
void task_message_output(TaskId task_id, const std::string &message) override
Called when a task generates a relevant message.
FDR::StreamProgressReporter::StreamProgressReporter
StreamProgressReporter(std::ostream &output_stream)
Creates a new StreamProgressReporter.
FDR::StreamProgressReporter::activate
void activate() override
Actives this progress reporter, subscribing it to any updates.
FDR::FileProgressReporter::deactivate
void deactivate() override
Deactivates this progress reporter, unsubscribing it from updates.
FDR::ProgressReporter::task_finished
virtual void task_finished(TaskId task_id)
Called when a new task is finished.
FDR::StreamProgressReporter
A progress reporter that sends reports to a stream.
Definition: progress_reporter.h:90