tdaq-develop-2025-02-12
DataConsumer.h
1 #ifndef _ots_DataConsumer_h_
2 #define _ots_DataConsumer_h_
3 
4 #include <map>
5 #include <string>
6 #include "otsdaq/DataManager/DataProcessor.h"
7 
8 namespace ots
9 {
13 class DataConsumer : public DataProcessor, public virtual WorkLoop
14 {
15  public:
17  {
22  };
23  DataConsumer(std::string supervisorApplicationUID,
24  std::string bufferUID,
25  std::string processorUID,
26  ConsumerPriority priority);
27  virtual ~DataConsumer(void);
28 
29  virtual void registerToBuffer(void);
30  // virtual void unregisterFromBuffer (void);
31 
32  virtual void configure(void) { ; }
33  virtual void startProcessingData(std::string runNumber);
34  virtual void stopProcessingData(void);
35 
37  template<class D, class H>
38  int read(D& buffer, H& header)
39  {
40  return static_cast<CircularBuffer<D, H>*>(theCircularBuffer_)
41  ->read(buffer, header, processorUID_);
42  }
43 
45  template<class D, class H>
46  int read(D*& buffer, H*& header)
47  {
48  return static_cast<CircularBuffer<D, H>*>(theCircularBuffer_)
49  ->read(buffer, header, processorUID_);
50  }
51 
52  template<class D, class H>
53  int setReadSubBuffer(void)
54  {
55  return static_cast<CircularBuffer<D, H>*>(theCircularBuffer_)
56  ->getLastReadBuffer(DataProcessor::processorUID_)
57  .setReadSubBuffer(DataProcessor::processorUID_);
58  }
59 
60  template<class D, class H>
61  int read(D& buffer)
62  {
63  return static_cast<CircularBuffer<D, H>*>(theCircularBuffer_)
64  ->read(buffer, processorUID_);
65  }
66 
67  ConsumerPriority getPriority(void);
68 
69  private:
70  ConsumerPriority priority_;
71 };
72 
73 } // namespace ots
74 
75 #endif
int read(D &buffer, H &header)
Copies the buffer into the passed parameters.
Definition: DataConsumer.h:38
virtual void startProcessingData(std::string runNumber)
virtual void registerToBuffer(void)
mirror DataProducerBase::registerToBuffer
Definition: DataConsumer.cc:40
int read(D *&buffer, H *&header)
Fast version where you point to the buffer without copying.
Definition: DataConsumer.h:46