00001 #ifndef artdaq_Application_TaskType_hh
00002 #define artdaq_Application_TaskType_hh
00003
00007 namespace artdaq
00008 {
00012 namespace detail
00013 {
00017 enum TaskType : int
00018 {
00019 BoardReaderTask = 1,
00020 EventBuilderTask = 2,
00021 DataLoggerTask = 3,
00022 DispatcherTask = 4,
00023 RoutingMasterTask = 5,
00024 UnknownTask
00025 };
00026
00027 TaskType StringToTaskType(std::string task)
00028 {
00029 if (task.size() < 1) return TaskType::UnknownTask;
00030 if (task[0] == 'b' || task[0] == 'B') return TaskType::BoardReaderTask;
00031 if (task[0] == 'e' || task[0] == 'E') return TaskType::EventBuilderTask;
00032 if (task[0] == 'r' || task[0] == 'R') return TaskType::RoutingMasterTask;
00033 if (task[0] == 'd' || task[0] == 'D') {
00034 if (task.size() < 2) return TaskType::UnknownTask;
00035 if (task[1] == 'a' || task[1] == 'A') return TaskType::DataLoggerTask;
00036 if (task[1] == 'i' || task[1] == 'I') return TaskType::DispatcherTask;
00037 }
00038
00039 return TaskType::UnknownTask;
00040 }
00041
00042 TaskType IntToTaskType(int task)
00043 {
00044 if (task > 0 && task <= 5)
00045 return static_cast<TaskType>(task);
00046
00047 return TaskType::UnknownTask;
00048 }
00049
00050 std::string TaskTypeToString(TaskType task)
00051 {
00052 switch (task)
00053 {
00054 case(BoardReaderTask):
00055 return "BoardReader";
00056 case(EventBuilderTask):
00057 return "EventBuilder";
00058 case(DataLoggerTask):
00059 return "DataLogger";
00060 case(DispatcherTask):
00061 return "Dispatcher";
00062 case(RoutingMasterTask):
00063 return "RoutingMaster";
00064 default:
00065 break;
00066 }
00067 return "Unknown";
00068 }
00069 }
00070
00071 using detail::TaskType;
00072 }
00073
00074 #endif