1 #include "otsdaq/DataManager/RawDataSaverConsumerBase.h" 
    2 #include "otsdaq/Macros/BinaryStringMacros.h" 
    3 #include "otsdaq/MessageFacility/MessageFacility.h" 
   15 RawDataSaverConsumerBase::RawDataSaverConsumerBase(
 
   16     std::string              supervisorApplicationUID,
 
   17     std::string              bufferUID,
 
   18     std::string              processorUID,
 
   20     const std::string&       configurationPath)
 
   23           supervisorApplicationUID, bufferUID, processorUID, HighConsumerPriority)
 
   24     , 
Configurable(theXDAQContextConfigTree, configurationPath)
 
   25     , filePath_(theXDAQContextConfigTree.getNode(configurationPath)
 
   27                     .getValue<std::string>())
 
   28     , fileRadix_(theXDAQContextConfigTree.getNode(configurationPath)
 
   29                      .getNode(
"RadixFileName")
 
   30                      .getValue<std::string>())
 
   31     , maxFileSize_(theXDAQContextConfigTree.getNode(configurationPath)
 
   32                        .getNode(
"MaxFileSize")
 
   35     , currentSubRunNumber_(0)
 
   43 RawDataSaverConsumerBase::~RawDataSaverConsumerBase(
void) {}
 
   50         currentSubRunNumber_ = 0;
 
   57 void RawDataSaverConsumerBase::stopProcessingData(
void)
 
   59     DataConsumer::stopProcessingData();
 
   64 void RawDataSaverConsumerBase::openFile(std::string runNumber)
 
   66     currentRunNumber_ = runNumber;
 
   68     std::stringstream fileName;
 
   69     fileName << filePath_ << 
"/" << fileRadix_ << 
"_Run" << runNumber;
 
   72         fileName << 
"_" << currentSubRunNumber_;
 
   73     fileName << 
"_Raw.dat";
 
   74     __CFG_COUT__ << 
"Saving file: " << fileName.str() << std::endl;
 
   75     outFile_.open(fileName.str().c_str(), std::ios::out | std::ios::binary);
 
   76     if(!outFile_.is_open())
 
   78         __CFG_SS__ << 
"Can't open file " << fileName.str() << std::endl;
 
   86 void RawDataSaverConsumerBase::closeFile(
void)
 
   88     if(outFile_.is_open())
 
   96 void RawDataSaverConsumerBase::save(
const std::string& data)
 
  143         long length = outFile_.tellp();
 
  144         if(length >= maxFileSize_ / 1000)
 
  147             ++currentSubRunNumber_;
 
  148             openFile(currentRunNumber_);
 
  152     writePacketHeader(data);  
 
  153     outFile_.write((
char*)&data[0], data.length());
 
  154     writePacketFooter(data);  
 
  158 bool RawDataSaverConsumerBase::workLoopThread(toolbox::task::WorkLoop* )
 
  163     return WorkLoop::continueWorkLoop_;
 
  167 void RawDataSaverConsumerBase::fastRead(
void)
 
  184     DataConsumer::setReadSubBuffer<std::string, std::map<std::string, std::string> >();
 
  188 void RawDataSaverConsumerBase::slowRead(
void)
 
int read(D &buffer, H &header)
Copies the buffer into the passed parameters.
virtual void startProcessingData(std::string runNumber)
virtual void startProcessingData(std::string runNumber) override
std::string * dataP_
For fast read.
std::string data_
For slow read.