Program Listing for File fs_output_manager.hpp
↰ Return to documentation for file (rcppsw/metrics/fs_output_manager.hpp)
#pragma once
/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <filesystem>
#include <map>
#include <utility>
#include <string>
#include "rcppsw/metrics/base_manager.hpp"
#include "rcppsw/metrics/config/metrics_config.hpp"
/*******************************************************************************
 * Namespaces
 ******************************************************************************/
namespace rcppsw::metrics {
namespace fs = std::filesystem;
/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class fs_output_manager : public rer::client<fs_output_manager>,
                          public rmetrics::base_manager {
 public:
  fs_output_manager(const rmconfig::metrics_config* mconfig,
                    const fs::path& output_root);
  ~fs_output_manager(void) override = default;
  const fs::path& metrics_path(void) const { return m_metrics_path; }
  /* base_manager overrides */
  void collector_preregister(const std::string& scoped_name,
                             const rmetrics::output_mode& mode) override final;
  void initialize(void) override;
  bool flush(const rmetrics::output_mode& mode,
             const rtypes::timestep& t) override;
  void interval_reset(const rtypes::timestep& t) override;
  void finalize(void) override;
 private:
  /* clang-format off */
  fs::path                  m_metrics_path;
  rmetrics::collector_group m_append{};
  rmetrics::collector_group m_truncate{};
  rmetrics::collector_group m_create{};
  /* clang-format on */
};
} /* namespace rcppsw::metrics */