artdaq  v3_12_02
TaskType.hh
1 #ifndef artdaq_Application_TaskType_hh
2 #define artdaq_Application_TaskType_hh
3 
7 namespace artdaq {
11 namespace detail {
15 enum TaskType : int
16 {
17  BoardReaderTask = 1,
18  EventBuilderTask = 2,
19  DataLoggerTask = 3,
20  DispatcherTask = 4,
21  RoutingManagerTask = 5,
22  UnknownTask
23 };
24 
30 inline TaskType StringToTaskType(std::string const& task)
31 {
32  if (task.empty()) return TaskType::UnknownTask;
33  if (task[0] == 'b' || task[0] == 'B') return TaskType::BoardReaderTask;
34  if (task[0] == 'e' || task[0] == 'E') return TaskType::EventBuilderTask;
35  if (task[0] == 'r' || task[0] == 'R') return TaskType::RoutingManagerTask;
36  if (task[0] == 'd' || task[0] == 'D')
37  {
38  if (task.size() < 2) return TaskType::UnknownTask;
39  if (task[1] == 'a' || task[1] == 'A') return TaskType::DataLoggerTask;
40  if (task[1] == 'i' || task[1] == 'I') return TaskType::DispatcherTask;
41  }
42 
43  return TaskType::UnknownTask;
44 }
45 
51 inline TaskType IntToTaskType(int const& task)
52 {
53  if (task > 0 && task <= 5)
54  return static_cast<TaskType>(task);
55 
56  return TaskType::UnknownTask;
57 }
58 
64 inline std::string TaskTypeToString(TaskType const& task)
65 {
66  switch (task)
67  {
68  case (BoardReaderTask):
69  return "BoardReader";
70  case (EventBuilderTask):
71  return "EventBuilder";
72  case (DataLoggerTask):
73  return "DataLogger";
74  case (DispatcherTask):
75  return "Dispatcher";
76  case (RoutingManagerTask):
77  return "RoutingManager";
78  default:
79  break;
80  }
81  return "Unknown";
82 }
83 
84 inline TraceStreamer& operator<<(TraceStreamer& x, TaskType r)
85 {
86  return x << TaskTypeToString(r);
87 }
88 } // namespace detail
89 
90 using detail::TaskType; // Require C++2011 scoping, hide C++03 scoping.
91 } // namespace artdaq
92 
93 #endif /* artdaq_Application_TaskType_hh */
TaskType StringToTaskType(std::string const &task)
Convert a string to a TaskType (Used by artdaq.cc)
Definition: TaskType.hh:30
TaskType IntToTaskType(int const &task)
Convert an integer to the corresponding TaskType
Definition: TaskType.hh:51
std::string TaskTypeToString(TaskType const &task)
Convert a TaskType to string representation
Definition: TaskType.hh:64
TaskType
The types of applications in artdaq.
Definition: TaskType.hh:15