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
00032 TaskType StringToTaskType(std::string task)
00033 {
00034 if (task.size() < 1) return TaskType::UnknownTask;
00035 if (task[0] == 'b' || task[0] == 'B') return TaskType::BoardReaderTask;
00036 if (task[0] == 'e' || task[0] == 'E') return TaskType::EventBuilderTask;
00037 if (task[0] == 'r' || task[0] == 'R') return TaskType::RoutingMasterTask;
00038 if (task[0] == 'd' || task[0] == 'D') {
00039 if (task.size() < 2) return TaskType::UnknownTask;
00040 if (task[1] == 'a' || task[1] == 'A') return TaskType::DataLoggerTask;
00041 if (task[1] == 'i' || task[1] == 'I') return TaskType::DispatcherTask;
00042 }
00043
00044 return TaskType::UnknownTask;
00045 }
00046
00052 TaskType IntToTaskType(int task)
00053 {
00054 if (task > 0 && task <= 5)
00055 return static_cast<TaskType>(task);
00056
00057 return TaskType::UnknownTask;
00058 }
00059
00065 std::string TaskTypeToString(TaskType task)
00066 {
00067 switch (task)
00068 {
00069 case(BoardReaderTask):
00070 return "BoardReader";
00071 case(EventBuilderTask):
00072 return "EventBuilder";
00073 case(DataLoggerTask):
00074 return "DataLogger";
00075 case(DispatcherTask):
00076 return "Dispatcher";
00077 case(RoutingMasterTask):
00078 return "RoutingMaster";
00079 default:
00080 break;
00081 }
00082 return "Unknown";
00083 }
00084 }
00085
00086 using detail::TaskType;
00087 }
00088
00089 #endif