Converting to better_enums to support gcc 8
This commit is contained in:
@@ -10,7 +10,7 @@ find_package(Threads REQUIRED)
|
|||||||
|
|
||||||
include(cmake/rapidjson.cmake)
|
include(cmake/rapidjson.cmake)
|
||||||
include(cmake/pistache.cmake)
|
include(cmake/pistache.cmake)
|
||||||
include(cmake/MagicEnum.cmake)
|
include(cmake/better-enums.cmake)
|
||||||
include(cmake/argparse.cmake)
|
include(cmake/argparse.cmake)
|
||||||
include(cmake/Catch2.cmake)
|
include(cmake/Catch2.cmake)
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ Building
|
|||||||
|
|
||||||
- git
|
- git
|
||||||
- cmake >= 3.14
|
- cmake >= 3.14
|
||||||
- gcc >= 9
|
- gcc >= 8
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://gitlab.com/iroddis/daggy
|
git clone https://gitlab.com/iroddis/daggy
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
|
|
||||||
project(magicEnum)
|
project(better-enums)
|
||||||
|
|
||||||
ExternalProject_Add(${PROJECT_NAME}-external
|
ExternalProject_Add(${PROJECT_NAME}-external
|
||||||
GIT_REPOSITORY https://github.com/Neargye/magic_enum.git
|
GIT_REPOSITORY https://github.com/aantron/better-enums.git
|
||||||
GIT_TAG "v0.7.3"
|
GIT_TAG "0.11.3"
|
||||||
GIT_SHALLOW TRUE
|
GIT_SHALLOW TRUE
|
||||||
SOURCE_DIR ${THIRD_PARTY_DIR}/${PROJECT_NAME}
|
SOURCE_DIR ${THIRD_PARTY_DIR}/${PROJECT_NAME}
|
||||||
BUILD_COMMAND ""
|
BUILD_COMMAND ""
|
||||||
@@ -12,4 +12,4 @@ ExternalProject_Add(${PROJECT_NAME}-external
|
|||||||
CONFIGURE_COMMAND "")
|
CONFIGURE_COMMAND "")
|
||||||
add_library(${PROJECT_NAME} INTERFACE)
|
add_library(${PROJECT_NAME} INTERFACE)
|
||||||
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-external)
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-external)
|
||||||
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE ${THIRD_PARTY_DIR}/${PROJECT_NAME}/include)
|
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE ${THIRD_PARTY_DIR}/${PROJECT_NAME})
|
||||||
@@ -3,4 +3,4 @@ project(daggy)
|
|||||||
file(GLOB_RECURSE SOURCES src/*.cpp)
|
file(GLOB_RECURSE SOURCES src/*.cpp)
|
||||||
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC include)
|
target_include_directories(${PROJECT_NAME} PUBLIC include)
|
||||||
target_link_libraries(${PROJECT_NAME} pistache pthread rapidjson magicEnum)
|
target_link_libraries(${PROJECT_NAME} pistache pthread rapidjson better-enums)
|
||||||
@@ -7,6 +7,8 @@
|
|||||||
#include <variant>
|
#include <variant>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <enum.h>
|
||||||
|
|
||||||
namespace daggy {
|
namespace daggy {
|
||||||
// Commands and parameters
|
// Commands and parameters
|
||||||
using ParameterValue = std::variant<std::string, std::vector<std::string>>;
|
using ParameterValue = std::variant<std::string, std::vector<std::string>>;
|
||||||
@@ -18,18 +20,17 @@ namespace daggy {
|
|||||||
using TimePoint = std::chrono::time_point<Clock>;
|
using TimePoint = std::chrono::time_point<Clock>;
|
||||||
|
|
||||||
// DAG Runs
|
// DAG Runs
|
||||||
using DAGDefID = int16_t;
|
|
||||||
using DAGRunID = size_t;
|
using DAGRunID = size_t;
|
||||||
using TaskID = size_t;
|
using TaskID = size_t;
|
||||||
|
|
||||||
enum class RunState : uint32_t {
|
BETTER_ENUM(RunState, uint32_t,
|
||||||
QUEUED = 0,
|
QUEUED = 1,
|
||||||
RUNNING = 1,
|
RUNNING = 1 << 1,
|
||||||
RETRY = 1 << 1,
|
RETRY = 1 << 2,
|
||||||
ERRORED = 1 << 2,
|
ERRORED = 1 << 3,
|
||||||
KILLED = 1 << 3,
|
KILLED = 1 << 4,
|
||||||
COMPLETED = 1 << 4
|
COMPLETED = 1 << 5
|
||||||
};
|
);
|
||||||
|
|
||||||
struct Task {
|
struct Task {
|
||||||
std::string name;
|
std::string name;
|
||||||
@@ -56,3 +57,5 @@ namespace daggy {
|
|||||||
std::string errorLog; // stderr from command
|
std::string errorLog; // stderr from command
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BETTER_ENUMS_DECLARE_STD_HASH(daggy::RunState)
|
||||||
@@ -53,7 +53,7 @@ namespace daggy {
|
|||||||
|
|
||||||
void DAG::resetRunning() {
|
void DAG::resetRunning() {
|
||||||
for (auto &v: vertices_) {
|
for (auto &v: vertices_) {
|
||||||
if (v.state != RunState::RUNNING) continue;
|
if (v.state != +RunState::RUNNING) continue;
|
||||||
v.state = RunState::QUEUED;
|
v.state = RunState::QUEUED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -64,7 +64,7 @@ namespace daggy {
|
|||||||
|
|
||||||
bool DAG::allVisited() const {
|
bool DAG::allVisited() const {
|
||||||
for (const auto &v: vertices_) {
|
for (const auto &v: vertices_) {
|
||||||
if (v.state != RunState::COMPLETED) return false;
|
if (v.state != +RunState::COMPLETED) return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -73,7 +73,7 @@ namespace daggy {
|
|||||||
for (size_t i = 0; i < vertices_.size(); ++i) {
|
for (size_t i = 0; i < vertices_.size(); ++i) {
|
||||||
auto &v = vertices_[i];
|
auto &v = vertices_[i];
|
||||||
|
|
||||||
if (v.state != RunState::QUEUED) continue;
|
if (v.state != +RunState::QUEUED) continue;
|
||||||
if (v.depCount != 0) continue;
|
if (v.depCount != 0) continue;
|
||||||
v.state = RunState::RUNNING;
|
v.state = RunState::RUNNING;
|
||||||
return i;
|
return i;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#include <magic_enum.hpp>
|
#include <iomanip>
|
||||||
|
|
||||||
|
#include <enum.h>
|
||||||
|
|
||||||
#include <daggy/Server.hpp>
|
#include <daggy/Server.hpp>
|
||||||
|
|
||||||
#include <daggy/Serialization.hpp>
|
#include <daggy/Serialization.hpp>
|
||||||
#include <daggy/Utilities.hpp>
|
#include <daggy/Utilities.hpp>
|
||||||
|
|
||||||
@@ -163,7 +164,7 @@ namespace daggy {
|
|||||||
} else {
|
} else {
|
||||||
ss << ", ";
|
ss << ", ";
|
||||||
}
|
}
|
||||||
ss << std::quoted(magic_enum::enum_name(state)) << ':' << count;
|
ss << std::quoted(state._to_string()) << ':' << count;
|
||||||
}
|
}
|
||||||
ss << '}' // end of taskCounts
|
ss << '}' // end of taskCounts
|
||||||
<< '}'; // end of item
|
<< '}'; // end of item
|
||||||
@@ -191,7 +192,7 @@ namespace daggy {
|
|||||||
first = true;
|
first = true;
|
||||||
for (const auto &state: run.taskRunStates) {
|
for (const auto &state: run.taskRunStates) {
|
||||||
if (first) { first = false; } else { ss << ','; }
|
if (first) { first = false; } else { ss << ','; }
|
||||||
ss << std::quoted(magic_enum::enum_name(state));
|
ss << std::quoted(state._to_string());
|
||||||
}
|
}
|
||||||
ss << "],";
|
ss << "],";
|
||||||
|
|
||||||
@@ -223,7 +224,7 @@ namespace daggy {
|
|||||||
for (const auto &change: run.dagStateChanges) {
|
for (const auto &change: run.dagStateChanges) {
|
||||||
if (first) { first = false; } else { ss << ','; }
|
if (first) { first = false; } else { ss << ','; }
|
||||||
ss << '{'
|
ss << '{'
|
||||||
<< R"("newState": )" << std::quoted(magic_enum::enum_name(change.newState)) << ','
|
<< R"("newState": )" << std::quoted(change.newState._to_string()) << ','
|
||||||
<< R"("time": )" << std::quoted(timePointToString(change.time))
|
<< R"("time": )" << std::quoted(timePointToString(change.time))
|
||||||
<< '}';
|
<< '}';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
#include <magic_enum.hpp>
|
#include <enum.h>
|
||||||
|
|
||||||
#include <daggy/loggers/dag_run/FileSystemLogger.hpp>
|
#include <daggy/loggers/dag_run/FileSystemLogger.hpp>
|
||||||
#include <daggy/Serialization.hpp>
|
#include <daggy/Serialization.hpp>
|
||||||
@@ -66,7 +67,7 @@ namespace daggy {
|
|||||||
|
|
||||||
void FileSystemLogger::updateDAGRunState(DAGRunID dagRunID, RunState state) {
|
void FileSystemLogger::updateDAGRunState(DAGRunID dagRunID, RunState state) {
|
||||||
std::ofstream ofh(getRunRoot(dagRunID) / "states.csv", std::ios::binary | std::ios::app);
|
std::ofstream ofh(getRunRoot(dagRunID) / "states.csv", std::ios::binary | std::ios::app);
|
||||||
ofh << std::quoted(timePointToString(Clock::now())) << ',' << magic_enum::enum_name(state) << '\n';
|
ofh << std::quoted(timePointToString(Clock::now())) << ',' << state._to_string() << '\n';
|
||||||
ofh.flush();
|
ofh.flush();
|
||||||
ofh.close();
|
ofh.close();
|
||||||
}
|
}
|
||||||
@@ -109,7 +110,7 @@ namespace daggy {
|
|||||||
|
|
||||||
void FileSystemLogger::updateTaskState(DAGRunID dagRunID, const std::string &taskName, RunState state) {
|
void FileSystemLogger::updateTaskState(DAGRunID dagRunID, const std::string &taskName, RunState state) {
|
||||||
std::ofstream ofh(getRunRoot(dagRunID) / taskName / "states.csv", std::ios::binary | std::ios::app);
|
std::ofstream ofh(getRunRoot(dagRunID) / taskName / "states.csv", std::ios::binary | std::ios::app);
|
||||||
ofh << std::quoted(timePointToString(Clock::now())) << ',' << magic_enum::enum_name(state) << '\n';
|
ofh << std::quoted(timePointToString(Clock::now())) << ',' << state._to_string() << '\n';
|
||||||
ofh.flush();
|
ofh.flush();
|
||||||
ofh.close();
|
ofh.close();
|
||||||
}
|
}
|
||||||
@@ -151,7 +152,7 @@ namespace daggy {
|
|||||||
|
|
||||||
record.dagStateChanges.emplace_back(DAGUpdateRecord{
|
record.dagStateChanges.emplace_back(DAGUpdateRecord{
|
||||||
.time = stringToTimePoint(time),
|
.time = stringToTimePoint(time),
|
||||||
.newState = magic_enum::enum_cast<RunState>(state).value()
|
.newState = RunState::_from_string(state.c_str())
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
ifh.close();
|
ifh.close();
|
||||||
@@ -168,7 +169,7 @@ namespace daggy {
|
|||||||
while (std::getline(ifh, line)) { continue; }
|
while (std::getline(ifh, line)) { continue; }
|
||||||
std::stringstream ss{line};
|
std::stringstream ss{line};
|
||||||
while (std::getline(ss, token, ',')) { continue; }
|
while (std::getline(ss, token, ',')) { continue; }
|
||||||
RunState taskState = magic_enum::enum_cast<RunState>(token).value();
|
RunState taskState = RunState::_from_string(token.c_str());
|
||||||
record.taskRunStates.emplace_back(taskState);
|
record.taskRunStates.emplace_back(taskState);
|
||||||
ifh.close();
|
ifh.close();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include <magic_enum.hpp>
|
#include <enum.h>
|
||||||
|
|
||||||
#include <daggy/loggers/dag_run/OStreamLogger.hpp>
|
#include <daggy/loggers/dag_run/OStreamLogger.hpp>
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ namespace daggy {
|
|||||||
|
|
||||||
void OStreamLogger::updateDAGRunState(DAGRunID dagRunID, RunState state) {
|
void OStreamLogger::updateDAGRunState(DAGRunID dagRunID, RunState state) {
|
||||||
std::lock_guard<std::mutex> lock(guard_);
|
std::lock_guard<std::mutex> lock(guard_);
|
||||||
os_ << "DAG State Change(" << dagRunID << "): " << magic_enum::enum_name(state) << std::endl;
|
os_ << "DAG State Change(" << dagRunID << "): " << state._to_string() << std::endl;
|
||||||
dagRuns_[dagRunID].dagStateChanges.push_back({Clock::now(), state});
|
dagRuns_[dagRunID].dagStateChanges.push_back({Clock::now(), state});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ namespace daggy {
|
|||||||
dagRun.taskRunStates[taskID] = state;
|
dagRun.taskRunStates[taskID] = state;
|
||||||
|
|
||||||
os_ << "Task State Change (" << dagRunID << '/' << taskName << " [task_id: " << taskID << "]): "
|
os_ << "Task State Change (" << dagRunID << '/' << taskName << " [task_id: " << taskID << "]): "
|
||||||
<< magic_enum::enum_name(state)
|
<< state._to_string()
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ namespace daggy {
|
|||||||
run.dagStateChanges.back().time)
|
run.dagStateChanges.back().time)
|
||||||
};
|
};
|
||||||
|
|
||||||
std::vector<RunState> states(run.tasks.size());
|
std::vector<RunState> states(run.tasks.size(), RunState::QUEUED);
|
||||||
for (const auto &taskUpdate: run.taskStateChanges) {
|
for (const auto &taskUpdate: run.taskStateChanges) {
|
||||||
states[taskUpdate.taskID] = taskUpdate.newState;
|
states[taskUpdate.taskID] = taskUpdate.newState;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user