otsdaq  v1_01_04
 All Classes Namespaces Functions
RawDataSaverConsumerBase.h
1 #ifndef _ots_RawDataSaverConsumerBase_h_
2 #define _ots_RawDataSaverConsumerBase_h_
3 
4 #include "otsdaq-core/DataManager/DataConsumer.h"
5 #include "otsdaq-core/ConfigurationInterface/Configurable.h"
6 
7 #include <string>
8 #include <fstream>
9 
10 namespace ots
11 {
12 
14 {
15 public:
16  RawDataSaverConsumerBase(std::string supervisorApplicationUID, std::string bufferUID, std::string processorUID, const ConfigurationTree& theXDAQContextConfigTree, const std::string& configurationPath);
17  virtual ~RawDataSaverConsumerBase(void);
18 
19 protected:
20  virtual void openFile (std::string runNumber);
21  virtual void closeFile (void);
22  virtual void save (const std::string& data);
23  virtual void writeHeader (void){;}
24  virtual void writeFooter (void){;}
25  virtual void writePacketHeader (const std::string& data){;}//unsigned char quadWordsCount = (data.length()-2)/8; outFile_.write( (char*)&quadWordsCount, 1);}
26  virtual void writePacketFooter (const std::string& data){;}
27  virtual void startProcessingData(std::string runNumber) override;
28  virtual void stopProcessingData (void) override;
29  virtual bool workLoopThread (toolbox::task::WorkLoop* workLoop);
30  virtual void fastRead (void);
31  virtual void slowRead (void);
32 
33  std::ofstream outFile_;
34  //For fast read
35  std::string* dataP_;
36  std::map<std::string,std::string>* headerP_;
37  //For slow read
38  std::string data_;
39  std::map<std::string,std::string> header_;
40 
41  std::string filePath_;
42  std::string fileRadix_;
43  long maxFileSize_;
44  std::string currentRunNumber_;
45  unsigned int currentSubRunNumber_;
46 
47 };
48 
49 }
50 
51 #endif