Files
WFR-lib/include/wfr/common/utils/print.h
T
2017-04-11 15:49:21 +02:00

269 lines
6.1 KiB
C++

#pragma once
#include <wfr/common/types/WfsTypes.h>
#include <wfr/common/types/WfrTypes.h>
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
namespace wfr {
namespace print {
inline std::string toString(const wfs::WorkflowStatus& status) {
std::string retval;
switch (status) {
case wfs::WorkflowStatus::Unknown:
retval = "Unknown";
break;
case wfs::WorkflowStatus::Created:
retval = "Created";
break;
case wfs::WorkflowStatus::Initialized:
retval = "Initialized";
break;
case wfs::WorkflowStatus::Running:
retval = "Running";
break;
case wfs::WorkflowStatus::Finished:
retval = "Finished";
break;
case wfs::WorkflowStatus::Error:
retval = "Error";
break;
default:
retval = "<<Unknown Status>>";
break;
}
return retval;
}
inline std::string toString(const wfs::ActivityStatus& status) {
std::string retval;
switch (status) {
case wfs::ActivityStatus::Unknown:
retval = "Unknown";
break;
case wfs::ActivityStatus::Created:
retval = "Created";
break;
case wfs::ActivityStatus::Initialized:
retval = "Initialized";
break;
case wfs::ActivityStatus::Running:
retval = "Running";
break;
case wfs::ActivityStatus::Finished:
retval = "Finished";
break;
case wfs::ActivityStatus::Error:
retval = "Error";
break;
default:
retval = "<<Unknown Status>>";
break;
}
return retval;
}
inline std::string toString(const wfs::ActivityInstanceStatus& status) {
std::string retval;
switch (status) {
case wfs::ActivityInstanceStatus::Unknown:
retval = "Unknown";
break;
case wfs::ActivityInstanceStatus::Created:
retval = "Created";
break;
case wfs::ActivityInstanceStatus::Initialized:
retval = "Initialized";
break;
case wfs::ActivityInstanceStatus::WaitingForData:
retval = "WaitingForData";
break;
case wfs::ActivityInstanceStatus::WaitingForDependency:
retval = "WaitingForDependency";
break;
case wfs::ActivityInstanceStatus::ReadyForExecution:
retval = "ReadyForExecution";
break;
case wfs::ActivityInstanceStatus::Scheduled:
retval = "Scheduled";
break;
case wfs::ActivityInstanceStatus::Queued:
retval = "Queued";
break;
case wfs::ActivityInstanceStatus::WaitingForFreeResources:
retval = "WaitingForFreeResources";
break;
case wfs::ActivityInstanceStatus::Running:
retval = "Running";
break;
case wfs::ActivityInstanceStatus::Error:
retval = "Error";
break;
case wfs::ActivityInstanceStatus::Finished:
retval = "Finished";
break;
default:
retval = "<<Unknown Status>>";
break;
}
return retval;
}
inline std::string toString(const wfs::ComputingResourceStatus& status) {
std::string retval;
switch (status) {
case wfs::ComputingResourceStatus::Unknown:
retval = "Unknown";
break;
case wfs::ComputingResourceStatus::Created:
retval = "Created";
break;
case wfs::ComputingResourceStatus::Idle:
retval = "Idle";
break;
case wfs::ComputingResourceStatus::Sleep:
retval = "Sleep";
break;
case wfs::ComputingResourceStatus::WokenUp:
retval = "WokenUp";
break;
case wfs::ComputingResourceStatus::Busy:
retval = "Busy";
break;
case wfs::ComputingResourceStatus::ExecutingTask:
retval = "ExecutingTask";
break;
case wfs::ComputingResourceStatus::FinishedTask:
retval = "FinishedTask";
break;
case wfs::ComputingResourceStatus::Shutdown:
retval = "Shutdown";
break;
case wfs::ComputingResourceStatus::Error:
retval = "Error";
break;
default:
retval = "<<Unknown Status>>";
break;
}
return retval;
}
inline std::string toString(const wfs::ActivityImplementationType& type) {
std::string retval;
switch (type) {
case wfs::ActivityImplementationType::PThread:
retval = "PThread";
break;
case wfs::ActivityImplementationType::OpenMP:
retval = "OpenMP";
break;
case wfs::ActivityImplementationType::OpenCL:
retval = "OpenCL";
break;
case wfs::ActivityImplementationType::CUDA:
retval = "CUDA";
break;
default:
retval = "<<Unknown Device>>";
break;
}
return retval;
}
inline std::string toString(const wfs::ComponentType& type) {
std::string retval;
switch (type) {
case wfs::ComponentType::Unknown:
retval = "Unknown";
break;
case wfs::ComponentType::Enactment:
retval = "Enactment";
break;
case wfs::ComponentType::Scheduler:
retval = "Scheduler";
break;
case wfs::ComponentType::ExecutionLayer:
retval = "ExecutionLayer";
break;
default:
retval = "<<Unknown Type>>";
break;
}
return retval;
}
inline std::string toString(const wfs::ComponentStatus& state) {
std::string retval;
switch (state) {
case wfs::ComponentStatus::Unknown:
retval = "Unknown";
break;
case wfs::ComponentStatus::Idle:
retval = "Idle";
break;
case wfs::ComponentStatus::Busy:
retval = "Busy";
break;
case wfs::ComponentStatus::Finished:
retval = "Finished";
break;
case wfs::ComponentStatus::Error:
retval = "Error";
break;
default:
retval = "<<Unknown State>>";
break;
}
return retval;
}
inline std::string toString(const wfs::ActivityType& type) {
switch (type) {
case wfs::ActivityType::Atomic:
return "Atomic";
case wfs::ActivityType::Conditional:
return "Conditional";
case wfs::ActivityType::Container:
return "Container";
case wfs::ActivityType::ForLoop:
return "ForLoop";
case wfs::ActivityType::WhileLoop:
return "WhileLoop";
case wfs::ActivityType::Unknown:
return "Unknown";
default:
break;
}
return "<<Unknown Type>>";
}
inline std::string toString(const wfr_timestamp_sc_t& timestamp) {
std::stringstream ss;
std::time_t time = std::chrono::system_clock::to_time_t(timestamp);
std::tm* tm_time = std::localtime(&time);
char temp[30];
std::strftime(temp, sizeof(temp), "%d.%m.%Y %H:%M:", tm_time);
ss << temp;
std::chrono::duration<double> msecs = timestamp - std::chrono::system_clock::from_time_t(time) + std::chrono::seconds(tm_time->tm_sec);
ss << std::fixed << std::setw(9) << std::setfill('0') << msecs.count();
return ss.str();
}
} /* namespace print */
} /* namespace wfr */