Files
MapLibreParticleLab/include/mln/util/action_journal_options.hpp
Bart Louwers 2a8ebc4906 core: rename mbgl directories to mln (#4511)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-08-22 20:50:14 +02:00

121 lines
3.5 KiB
C++

#pragma once
#include <string>
namespace mln {
namespace util {
/**
* @brief Holds values for Action Journal options.
*/
class ActionJournalOptions {
public:
ActionJournalOptions() = default;
~ActionJournalOptions() = default;
/**
* @brief Enable action journal event logging, defaults to false.
*
* @param value true to enable, false to disable.
* @return ActionJournalOptions for chaining options together.
*/
ActionJournalOptions& enable(bool value = true) {
enable_ = value;
return *this;
}
/**
* @brief Gets the previously set (or default) value.
* @return Returns ActionJournal state
*/
bool enabled() const { return enable_; }
/**
* @brief Set the log files location. An umbrela `action_journal` directory
* will be created at the given location containing all files.
*
* @param path Action Journal log path.
* @return ActionJournalOptions for chaining options together.
*/
ActionJournalOptions& withPath(const std::string& path) {
path_ = path;
return *this;
}
/**
* @brief Gets the previously set (or default) log path.
* @return Returns ActionJournal log path
*/
std::string path() const { return path_; }
/**
* @brief Set the file size for the log files. The action journal uses a
* rolling log with multiple files. Total log size is equal to
* `logFileSize * logFileCount`.
*
* @param size Action Journal log file size.
* @return ActionJournalOptions for chaining options together.
*/
ActionJournalOptions& withLogFileSize(const uint32_t size) {
logFileSize_ = size;
return *this;
}
/**
* @brief Gets the previously set (or default) log file size.
* @return Returns ActionJournal log file size
*/
uint32_t logFileSize() const { return logFileSize_; }
/**
* @brief Set the number of log files. The action journal uses a
* rolling log with multiple files. Total log size is equal to
* `logFileSize * logFileCount`.
*
* @param count Action Journal log file count.
* @return ActionJournalOptions for chaining options together.
*/
ActionJournalOptions& withLogFileCount(const uint32_t count) {
logFileCount_ = count;
return *this;
}
/**
* @brief Gets the previously set (or default) number of log files.
* @return Returns ActionJournal log file count
*/
uint32_t logFileCount() const { return logFileCount_; }
/**
* @brief Set the number of seconds to wait between rendering stats reports.
*
* @param interval time interval in seconds.
* @return ActionJournalOptions for chaining options together.
*/
ActionJournalOptions& withRenderingStatsReportInterval(const uint32_t interval) {
renderingStatsReportInterval_ = interval;
return *this;
}
/**
* @brief Gets the previously set (or default) time interval.
* @return Returns report time interval in seconds
*/
uint32_t renderingStatsReportInterval() const { return renderingStatsReportInterval_; }
protected:
bool enable_ = false;
// path of the log
std::string path_{"/tmp/"};
// log file size
uint32_t logFileSize_ = 1024 * 1024;
// number of log files (each of `logFileSize` size)
uint32_t logFileCount_ = 5;
// the wait time (seconds) between rendering reports
uint32_t renderingStatsReportInterval_ = 60;
};
} // namespace util
} // namespace mln