$treeview $search $mathjax $extrastylesheet
otsdaq
v2_03_00
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #ifndef _ots_DataProducerBase_h_ 00002 #define _ots_DataProducerBase_h_ 00003 00004 #include "otsdaq-core/DataManager/CircularBuffer.h" 00005 #include "otsdaq-core/DataManager/DataProcessor.h" 00006 #include "otsdaq-core/Macros/BinaryStringMacros.h" 00007 00008 #include <string> 00009 00010 namespace ots 00011 { 00012 // DataProducerBase 00013 // This class provides base class functionality for Data Producer plugin classes to 00014 // receive incoming streaming data and places it in a Buffer. 00015 class DataProducerBase : public DataProcessor 00016 { 00017 public: 00018 DataProducerBase(const std::string& supervisorApplicationUID, 00019 const std::string& bufferUID, 00020 const std::string& processorUID, 00021 unsigned int bufferSize = 100); 00022 virtual ~DataProducerBase(void); 00023 00024 virtual void registerToBuffer(void); 00025 // virtual void unregisterFromBuffer (void); 00026 00027 template<class D, class H> 00028 int attachToEmptySubBuffer(D*& data, H*& header) 00029 { 00030 return static_cast<CircularBuffer<D, H>*>(theCircularBuffer_) 00031 ->getBuffer(DataProcessor::processorUID_) 00032 .attachToEmptySubBuffer(data, header); 00033 } 00034 00035 template<class D, class H> 00036 int setWrittenSubBuffer(void) 00037 { 00038 __COUT__ << __E__; 00039 return static_cast<CircularBuffer<D, H>*>(theCircularBuffer_) 00040 ->getBuffer(DataProcessor::processorUID_) 00041 .setWrittenSubBuffer(); 00042 } 00043 00044 template<class D, class H> 00045 int write(const D& buffer) 00046 { 00047 return static_cast<CircularBuffer<D, H>*>(theCircularBuffer_) 00048 ->getBuffer(DataProcessor::processorUID_) 00049 .write(buffer); 00050 } 00051 00052 template<class D, class H> 00053 int write(const D& buffer, const H& header) 00054 { 00055 return static_cast<CircularBuffer<D, H>*>(theCircularBuffer_) 00056 ->getBuffer(DataProcessor::processorUID_) 00057 .write(buffer, header); 00058 } 00059 00060 unsigned int getBufferSize(void) const { return bufferSize_; } 00061 00062 private: 00063 const unsigned int bufferSize_; 00064 }; 00065 00066 } // namespace ots 00067 00068 #endif