00001 #ifndef _ots_VirtualEventBuilder_h_
00002 #define _ots_VirtualEventBuilder_h_
00003
00004 #include "otsdaq-core/DataManager/DataProducer.h"
00005 #include "otsdaq-core/DataManager/DataConsumer.h"
00006 #include <string>
00007 #include <queue>
00008
00009 namespace ots
00010 {
00011
00012 class Event;
00013
00014 class VirtualEventBuilder : public DataProducer, public DataConsumer
00015 {
00016 public:
00017 VirtualEventBuilder(std::string supervisorApplicationUID, std::string bufferUID, std::string processorUID);
00018 virtual ~VirtualEventBuilder(void);
00019
00020 virtual void build (const std::string& buffer) = 0;
00021 virtual std::queue<Event*>& getCompleteEvents(void) = 0;
00022 virtual std::queue<Event*>& getAllEvents (void) = 0;
00023 void flush (void);
00024
00025 std::string getName(void);
00026
00027 protected:
00028 bool workLoopThread(toolbox::task::WorkLoop* workLoop);
00029 std::queue<Event*> completeEvents_;
00030 };
00031
00032 }
00033
00034 #endif