tdaq-develop-2025-02-12
CircularBufferBase.h
1 #ifndef _ots_CircularBufferBase_h_
2 #define _ots_CircularBufferBase_h_
3 
4 #include <string>
5 
6 namespace ots
7 {
8 class DataProcessor;
9 
13 {
14  public:
16  {
21  };
22 
23  CircularBufferBase(const std::string& bufferID);
24  virtual ~CircularBufferBase(void);
25 
26  virtual void reset(void) = 0;
27  void registerProducer(DataProcessor* producer, unsigned int numberOfSubBuffers = 100);
28  void registerConsumer(DataProcessor* consumer);
29  // void unregisterProducer(DataProcessor* producer);
30  // void unregisterConsumer(DataProcessor* consumer);
31 
32  virtual bool isEmpty(void) const = 0;
33  virtual unsigned int getTotalNumberOfSubBuffers(void) const = 0;
34  virtual unsigned int getProducerBufferSize(const std::string& producerID) const = 0;
35 
36  protected:
37  virtual void registerProducer(const std::string& producerID,
38  unsigned int numberOfSubBuffers = 100) = 0;
39  virtual void registerConsumer(const std::string& consumerID,
40  ConsumerPriority priority) = 0;
41  // virtual void unregisterProducer (const std::string& producerID) = 0;
42  // virtual void unregisterConsume r(const std::string& consumerID) = 0;
43 
44  std::string dataBufferId_;
45  std::string mfSubject_;
46 };
47 } // namespace ots
48 #endif