otsdaq  3.11.00
DataProcessor.h
1 #ifndef _ots_DataProcessor_h_
2 #define _ots_DataProcessor_h_
3 
4 #include <atomic>
5 #include <cstdint>
6 #include <map>
7 #include <string>
8 #include "otsdaq/DataManager/CircularBuffer.h"
9 #include "otsdaq/DataManager/CircularBufferBase.h"
10 #include "otsdaq/WorkLoopManager/WorkLoop.h"
11 
12 namespace ots
13 {
17 {
18  public:
19  DataProcessor(std::string supervisorApplicationUID,
20  std::string bufferUID,
21  std::string processorUID);
22  virtual ~DataProcessor(void);
23 
24  virtual void registerToBuffer(void) = 0;
25  // virtual void unregisterFromBuffer(void) = 0;
26 
27  virtual void configure(void) = 0;
28  virtual void startProcessingData(std::string runNumber) = 0;
29  virtual void stopProcessingData(void) = 0;
30  virtual void pauseProcessingData(void) { stopProcessingData(); }
31  virtual void resumeProcessingData(void) { startProcessingData(""); }
32 
34  const std::string& getProcessorID(void) const { return processorUID_; }
35 
36  void setCircularBuffer(CircularBufferBase* circularBuffer);
37 
41  uint64_t getStatPackets(void) const { return statPackets_.load(std::memory_order_relaxed); }
42  uint64_t getStatBytes(void) const { return statBytes_.load(std::memory_order_relaxed); }
43  uint64_t getStatErrors(void) const { return statErrors_.load(std::memory_order_relaxed); }
44  uint64_t getStatBusyNanos(void) const { return statBusyNanos_.load(std::memory_order_relaxed); }
45 
47  virtual std::map<std::string, std::string> getExtraStatus(void) const
48  {
49  return std::map<std::string, std::string>();
50  }
51 
52  protected:
53  void countPacket(uint64_t bytes)
54  {
55  statPackets_.fetch_add(1, std::memory_order_relaxed);
56  statBytes_.fetch_add(bytes, std::memory_order_relaxed);
57  }
58  void countError(void) { statErrors_.fetch_add(1, std::memory_order_relaxed); }
59  void countBusyNanos(uint64_t nanos)
60  {
61  statBusyNanos_.fetch_add(nanos, std::memory_order_relaxed);
62  }
63 
64  const std::string supervisorApplicationUID_;
65  const std::string bufferUID_;
66  const std::string processorUID_;
67  CircularBufferBase* theCircularBuffer_;
68 
69  private:
70  std::atomic<uint64_t> statPackets_{0};
71  std::atomic<uint64_t> statBytes_{0};
72  std::atomic<uint64_t> statErrors_{0};
73  std::atomic<uint64_t> statBusyNanos_{0};
74 };
75 
76 } // namespace ots
77 
78 #endif
const std::string & getProcessorID(void) const
Getters.
Definition: DataProcessor.h:34
uint64_t getStatPackets(void) const
Definition: DataProcessor.h:41
virtual std::map< std::string, std::string > getExtraStatus(void) const
Plugin-specific status items (e.g. socket backlog) as name/value strings.
Definition: DataProcessor.h:47
defines used also by OtsConfigurationWizardSupervisor