Files
daggy/libdaggy/include/daggy/loggers/dag_run/OStreamLogger.hpp
2022-01-06 15:20:06 -04:00

63 lines
2.0 KiB
C++

#pragma once
#include <iostream>
#include <mutex>
#include "DAGRunLogger.hpp"
#include "Defines.hpp"
namespace daggy::loggers::dag_run {
/*
* This logger should only be used for debug purposes. It doesn't actually log
* anything, just prints stuff to stdout.
*/
class OStreamLogger : public DAGRunLogger
{
public:
explicit OStreamLogger(std::ostream &os);
~OStreamLogger() override;
// Execution
DAGRunID startDAGRun(const DAGSpec &dagSpec) override;
void addTask(DAGRunID dagRunID, const std::string &taskName,
const Task &task) override;
void updateTask(DAGRunID dagRunID, const std::string &taskName,
const Task &task) override;
void updateDAGRunState(DAGRunID dagRunID, RunState state) override;
void logTaskAttempt(DAGRunID, const std::string &taskName,
const AttemptRecord &attempt) override;
void updateTaskState(DAGRunID dagRunID, const std::string &taskName,
RunState state) override;
// Querying
DAGSpec getDAGSpec(DAGRunID dagRunID) override;
std::vector<DAGRunSummary> queryDAGRuns(const std::string &tag = "",
bool all = false) override;
RunState getDAGRunState(DAGRunID dagRunID) override;
DAGRunRecord getDAGRun(DAGRunID dagRunID) override;
Task getTask(DAGRunID dagRunID, const std::string &taskName) override;
TaskRecord getTaskRecord(DAGRunID dagRunID,
const std::string &taskName) override;
RunState getTaskState(DAGRunID dagRunID,
const std::string &taskName) override;
private:
std::mutex guard_;
std::ostream &os_;
std::vector<DAGRunRecord> dagRuns_;
void _updateTaskState(DAGRunID dagRunID, const std::string &taskName,
RunState state);
void _updateDAGRunState(DAGRunID dagRunID, RunState state);
};
} // namespace daggy::loggers::dag_run