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