otsdaq_prepmodernization  v2_04_02
BurstDataAndTimeSaverConsumer_processor.cc
1 #include "otsdaq/Macros/ProcessorPluginMacros.h"
2 #include "otsdaq-prepmodernization/DataProcessorPlugins/BurstDataAndTimeSaverConsumer.h"
3 
4 using namespace ots;
5 
6 //========================================================================================================================
7 BurstDataAndTimeSaverConsumer::BurstDataAndTimeSaverConsumer(
8  std::string supervisorApplicationUID,
9  std::string bufferUID,
10  std::string processorUID,
11  const ConfigurationTree& theXDAQContextConfigTree,
12  const std::string& configurationPath)
13  : WorkLoop(processorUID)
14  , RawDataSaverConsumerBase(supervisorApplicationUID,
15  bufferUID,
16  processorUID,
17  theXDAQContextConfigTree,
18  configurationPath)
19 {
20 }
21 
22 //========================================================================================================================
23 BurstDataAndTimeSaverConsumer::~BurstDataAndTimeSaverConsumer(void) {}
24 
25 //========================================================================================================================
26 // write header to file before each packet
27 void BurstDataAndTimeSaverConsumer::writePacketHeader(const std::string& data)
28 {
29  // write
30  uint64_t t = time(0);
31  outFile_.write((char*)&t, 8); // 8-byte linux timestamp in seconds
32 
33  // data is expected to be 2B (Type, SequenceID) + some number of quadwords
34  uint8_t quadWordCount = data.length() / 8;
35  outFile_.write((char*)&quadWordCount, 1); // 1-byte quad-word count
36 }
37 
38 DEFINE_OTS_PROCESSOR(BurstDataAndTimeSaverConsumer)