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