LCOV - code coverage report
Current view: top level - artdaq/Application - TaskType.hh (source / functions) Coverage Total Hit
Test: artdaq.info.cleaned Lines: 0.0 % 29 0
Test Date: 2025-09-04 00:45:34 Functions: 0.0 % 3 0

            Line data    Source code
       1              : #ifndef artdaq_Application_TaskType_hh
       2              : #define artdaq_Application_TaskType_hh
       3              : 
       4              : /**
       5              :  * \brief The artdaq namespace
       6              :  */
       7              : namespace artdaq {
       8              : /**
       9              :  * \brief The artdaq::detail namespace contains internal implementation details for some classes
      10              :  */
      11              : namespace detail {
      12              : /**
      13              :  * \brief The types of applications in artdaq
      14              :  */
      15              : enum TaskType : int
      16              : {
      17              :         BoardReaderTask = 1,
      18              :         EventBuilderTask = 2,
      19              :         DataLoggerTask = 3,
      20              :         DispatcherTask = 4,
      21              :         RoutingManagerTask = 5,
      22              :         UnknownTask
      23              : };
      24              : 
      25              : /// <summary>
      26              : /// Convert a string to a TaskType (Used by artdaq.cc)
      27              : /// </summary>
      28              : /// <param name="task">Name of the task</param>
      29              : /// <returns>Corresponding TaskType or TaskType::UnknownTask if no match</returns>
      30            0 : inline TaskType StringToTaskType(std::string const& task)
      31              : {
      32            0 :         if (task.empty()) return TaskType::UnknownTask;
      33            0 :         if (task[0] == 'b' || task[0] == 'B') return TaskType::BoardReaderTask;
      34            0 :         if (task[0] == 'e' || task[0] == 'E') return TaskType::EventBuilderTask;
      35            0 :         if (task[0] == 'r' || task[0] == 'R') return TaskType::RoutingManagerTask;
      36            0 :         if (task[0] == 'd' || task[0] == 'D')
      37              :         {
      38            0 :                 if (task.size() < 2) return TaskType::UnknownTask;
      39            0 :                 if (task[1] == 'a' || task[1] == 'A') return TaskType::DataLoggerTask;
      40            0 :                 if (task[1] == 'i' || task[1] == 'I') return TaskType::DispatcherTask;
      41              :         }
      42              : 
      43            0 :         return TaskType::UnknownTask;
      44              : }
      45              : 
      46              : /// <summary>
      47              : /// Convert an integer to the corresponding TaskType
      48              : /// </summary>
      49              : /// <param name="task">Enumeration identifier of Task</param>
      50              : /// <returns>Corresponding TaskType or TaskType::UnknownTask if no match</returns>
      51            0 : inline TaskType IntToTaskType(int const& task)
      52              : {
      53            0 :         if (task > 0 && task <= 5)
      54            0 :                 return static_cast<TaskType>(task);
      55              : 
      56            0 :         return TaskType::UnknownTask;
      57              : }
      58              : 
      59              : /// <summary>
      60              : /// Convert a TaskType to string representation
      61              : /// </summary>
      62              : /// <param name="task">TaskType to convert</param>
      63              : /// <returns>String represenation of Task name</returns>
      64            0 : inline std::string TaskTypeToString(TaskType const& task)
      65              : {
      66            0 :         switch (task)
      67              :         {
      68            0 :                 case (BoardReaderTask):
      69            0 :                         return "BoardReader";
      70            0 :                 case (EventBuilderTask):
      71            0 :                         return "EventBuilder";
      72            0 :                 case (DataLoggerTask):
      73            0 :                         return "DataLogger";
      74            0 :                 case (DispatcherTask):
      75            0 :                         return "Dispatcher";
      76            0 :                 case (RoutingManagerTask):
      77            0 :                         return "RoutingManager";
      78            0 :                 default:
      79            0 :                         break;
      80              :         }
      81            0 :         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 */
        

Generated by: LCOV version 2.0-1