Health-GPS  1.2.2.0
Global Health Policy Simulation model (Health-GPS)
result_file_writer.h
Go to the documentation of this file.
1 #pragma once
2 #include <atomic>
3 #include <filesystem>
4 #include <fstream>
5 #include <mutex>
6 
7 #include "model_info.h"
8 #include "result_writer.h"
9 
10 namespace host {
17 class ResultFileWriter final : public ResultWriter {
18  public:
19  ResultFileWriter() = delete;
23  ResultFileWriter(const std::filesystem::path file_name, const ExperimentInfo info);
24 
27  ResultFileWriter(ResultFileWriter &&other) noexcept;
28  ResultFileWriter &operator=(ResultFileWriter &&other) noexcept;
29 
32  void write(const hgps::ResultEventMessage &message) override;
33 
34  private:
35  std::ofstream stream_;
36  std::ofstream csvstream_;
37  std::mutex lock_mutex_;
38  std::atomic<bool> first_row_{true};
39  ExperimentInfo info_;
40 
41  void write_json_begin(const std::filesystem::path output);
42  void write_json_end();
43 
44  std::string to_json_string(const hgps::ResultEventMessage &message) const;
45  void write_csv_channels(const hgps::ResultEventMessage &message);
46  void write_csv_header(const hgps::ResultEventMessage &message);
47 };
48 } // namespace host
Defines the results message file stream writer class.
Definition: result_file_writer.h:17
void write(const hgps::ResultEventMessage &message) override
Writes the hgps::ResultEventMessage contents to a stream.
Definition: result_file_writer.cpp:65
ResultFileWriter & operator=(const ResultFileWriter &)=delete
~ResultFileWriter()
Destroys a host::ResultFileWriter instance.
Definition: result_file_writer.cpp:52
ResultFileWriter(const ResultFileWriter &)=delete
Defines the Health-GPS results message writer interface.
Definition: result_writer.h:7
Top-level namespace for Health-GPS Console host application.
Definition: configuration.cpp:31
Implements the simulation results event message data type.
Definition: result_message.h:8
Simulation experiment run-time information for reproducibility.
Definition: model_info.h:8