$treeview $search $mathjax $extrastylesheet
otsdaq
v2_03_00
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #ifndef _ots_RawDataSaverConsumerBase_h_ 00002 #define _ots_RawDataSaverConsumerBase_h_ 00003 00004 #include "otsdaq-core/Configurable/Configurable.h" 00005 #include "otsdaq-core/DataManager/DataConsumer.h" 00006 00007 #include <fstream> 00008 #include <string> 00009 00010 namespace ots 00011 { 00012 class RawDataSaverConsumerBase : public DataConsumer, public Configurable 00013 { 00014 public: 00015 RawDataSaverConsumerBase(std::string supervisorApplicationUID, 00016 std::string bufferUID, 00017 std::string processorUID, 00018 const ConfigurationTree& theXDAQContextConfigTree, 00019 const std::string& configurationPath); 00020 virtual ~RawDataSaverConsumerBase(void); 00021 00022 protected: 00023 virtual void openFile(std::string runNumber); 00024 virtual void closeFile(void); 00025 virtual void save(const std::string& data); 00026 virtual void writeHeader(void) { ; } 00027 virtual void writeFooter(void) { ; } 00028 virtual void writePacketHeader(const std::string& data) 00029 { 00030 ; 00031 } // unsigned char quadWordsCount = (data.length()-2)/8; outFile_.write( 00032 // (char*)&quadWordsCount, 1);} 00033 virtual void writePacketFooter(const std::string& data) { ; } 00034 virtual void startProcessingData(std::string runNumber) override; 00035 virtual void stopProcessingData(void) override; 00036 virtual bool workLoopThread(toolbox::task::WorkLoop* workLoop); 00037 virtual void fastRead(void); 00038 virtual void slowRead(void); 00039 00040 std::ofstream outFile_; 00041 // For fast read 00042 std::string* dataP_; 00043 std::map<std::string, std::string>* headerP_; 00044 // For slow read 00045 std::string data_; 00046 std::map<std::string, std::string> header_; 00047 00048 std::string filePath_; 00049 std::string fileRadix_; 00050 long maxFileSize_; 00051 std::string currentRunNumber_; 00052 unsigned int currentSubRunNumber_; 00053 }; 00054 00055 } // namespace ots 00056 00057 #endif