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
00012
00013 class CircularBufferBase
00014 {
00015 public:
00016 enum ConsumerPriority
00017 {
00018 LowConsumerPriority,
00019 HighConsumerPriority
00020 };
00021
00022 CircularBufferBase();
00023 virtual ~CircularBufferBase();
00024
00025 virtual void reset (void) = 0;
00026 void registerProducer (DataProcessor* producer, unsigned int numberOfSubBuffers=100);
00027 void registerConsumer (DataProcessor* consumer);
00028 void unregisterConsumer(DataProcessor* consumer);
00029
00030
00031 virtual bool isEmpty (void) = 0;
00032 virtual unsigned int getNumberOfBuffers(void) = 0;
00033
00034 protected:
00035 virtual void registerProducer (std::string producerID, unsigned int numberOfSubBuffers=100) = 0;
00036 virtual void registerConsumer (std::string consumerID, ConsumerPriority priority) = 0;
00037 virtual void unregisterConsumer(std::string consumerID) = 0;
00038 };
00039 }
00040 #endif