63 lines
2.0 KiB
C++
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
|