00001 #ifndef artdaq_Application_TaskType_hh
00002 #define artdaq_Application_TaskType_hh
00003
00004 #include "artdaq/DAQdata/Globals.hh"
00005
00009 namespace artdaq
00010 {
00014 namespace detail
00015 {
00019 enum TaskType : int
00020 {
00021 BoardReaderTask = 1,
00022 EventBuilderTask = 2,
00023 DataLoggerTask = 3,
00024 DispatcherTask = 4,
00025 RoutingMasterTask = 5,
00026 UnknownTask
00027 };
00028
00034 TaskType StringToTaskType(std::string const& task)
00035 {
00036 if (task.size() < 1) return TaskType::UnknownTask;
00037 if (task[0] == 'b' || task[0] == 'B') return TaskType::BoardReaderTask;
00038 if (task[0] == 'e' || task[0] == 'E') return TaskType::EventBuilderTask;
00039 if (task[0] == 'r' || task[0] == 'R') return TaskType::RoutingMasterTask;
00040 if (task[0] == 'd' || task[0] == 'D') {
00041 if (task.size() < 2) return TaskType::UnknownTask;
00042 if (task[1] == 'a' || task[1] == 'A') return TaskType::DataLoggerTask;
00043 if (task[1] == 'i' || task[1] == 'I') return TaskType::DispatcherTask;
00044 }
00045
00046 return TaskType::UnknownTask;
00047 }
00048
00054 TaskType IntToTaskType(int const& task)
00055 {
00056 if (task > 0 && task <= 5)
00057 return static_cast<TaskType>(task);
00058
00059 return TaskType::UnknownTask;
00060 }
00061
00067 std::string TaskTypeToString(TaskType const& task)
00068 {
00069 switch (task)
00070 {
00071 case(BoardReaderTask):
00072 return "BoardReader";
00073 case(EventBuilderTask):
00074 return "EventBuilder";
00075 case(DataLoggerTask):
00076 return "DataLogger";
00077 case(DispatcherTask):
00078 return "Dispatcher";
00079 case(RoutingMasterTask):
00080 return "RoutingMaster";
00081 default:
00082 break;
00083 }
00084 return "Unknown";
00085 }
00086
00087
00088 inline TraceStreamer& operator<<(TraceStreamer& x, TaskType r)
00089 {
00090 return x << TaskTypeToString(r);
00091 }
00092 }
00093
00094 using detail::TaskType;
00095 }
00096
00097 #endif