00001 #ifndef _ots_CircularBufferBase_h_
00002 #define _ots_CircularBufferBase_h_
00003
00004 #include <string>
00005
00006 namespace ots
00007 {
00008
00009 class DataProcessor;
00010
00011 class CircularBufferBase
00012 {
00013 public:
00014 enum ConsumerPriority
00015 {
00016 LowConsumerPriority,
00017 HighConsumerPriority
00018 };
00019
00020 CircularBufferBase();
00021 virtual ~CircularBufferBase();
00022
00023 virtual void reset (void) = 0;
00024 void registerProducer (DataProcessor* producer, unsigned int numberOfSubBuffers=100);
00025 void registerConsumer (DataProcessor* consumer);
00026 void unregisterConsumer(DataProcessor* consumer);
00027
00028
00029 virtual bool isEmpty (void) = 0;
00030 virtual unsigned int getNumberOfBuffers(void) = 0;
00031
00032 protected:
00033 virtual void registerProducer (std::string producerID, unsigned int numberOfSubBuffers=100) = 0;
00034 virtual void registerConsumer (std::string consumerID, ConsumerPriority priority) = 0;
00035 virtual void unregisterConsumer(std::string consumerID) = 0;
00036 };
00037 }
00038 #endif