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