otsdaq  v1_01_02
 All Classes Namespaces Functions
CircularBufferBase.h
1 #ifndef _ots_CircularBufferBase_h_
2 #define _ots_CircularBufferBase_h_
3 
4 #include <string>
5 
6 namespace ots
7 {
8 
9 class DataProcessor;
10 
12 {
13 public:
14  enum ConsumerPriority
15  {
16  LowConsumerPriority, //If the buffers are full because a low priority consumer didn't emptied them then overwrite
17  HighConsumerPriority //Can't overwrite but need to wait for sometime before writing a buffer
18  };
19 
21  virtual ~CircularBufferBase();
22 
23  virtual void reset (void) = 0;
24  void registerProducer (DataProcessor* producer, unsigned int numberOfSubBuffers=100);
25  void registerConsumer (DataProcessor* consumer);
26  void unregisterConsumer(DataProcessor* consumer);
27  //void registerConsumer(std::string name, ConsumerPriority priority);
28 
29  virtual bool isEmpty (void) = 0;
30  virtual unsigned int getNumberOfBuffers(void) = 0;
31 
32 protected:
33  virtual void registerProducer (std::string producerID, unsigned int numberOfSubBuffers=100) = 0;
34  virtual void registerConsumer (std::string consumerID, ConsumerPriority priority) = 0;
35  virtual void unregisterConsumer(std::string consumerID) = 0;
36 };
37 }
38 #endif