00001 #include "otsdaq-core/DataProcessorPlugins/OtsDataSaverConsumer.h"
00002 #include "otsdaq-core/Macros/ProcessorPluginMacros.h"
00003
00004 using namespace ots;
00005
00006
00007 OtsDataSaverConsumer::OtsDataSaverConsumer(std::string supervisorApplicationUID, std::string bufferUID, std::string processorUID, const ConfigurationTree& theXDAQContextConfigTree, const std::string& configurationPath)
00008 : WorkLoop (processorUID)
00009 , RawDataSaverConsumerBase(supervisorApplicationUID, bufferUID, processorUID, theXDAQContextConfigTree, configurationPath)
00010 {
00011 }
00012
00013
00014 OtsDataSaverConsumer::~OtsDataSaverConsumer(void)
00015 {}
00016
00017
00018 void OtsDataSaverConsumer::writeHeader(void)
00019 {}
00020
00021
00022
00023 void OtsDataSaverConsumer::writePacketHeader(const std::string& data)
00024 {
00025 unsigned char quadWordsCount = (data.length()-2)/8;
00026 outFile_.write( (char*)&quadWordsCount, 1);
00027
00028
00029
00030
00031 if(quadWordsCount)
00032 {
00033 unsigned char seqId = data[1];
00034 if(!(lastSeqId_ + 1 == seqId ||
00035 (lastSeqId_ == 255 && seqId == 0)))
00036 {
00037 __COUT__ << "?????? NOOOO Missing Packets: " <<
00038 (unsigned int)lastSeqId_ << " v " << (unsigned int)seqId << __E__;
00039 }
00040 lastSeqId_ = seqId;
00041 }
00042 }
00043
00044 DEFINE_OTS_PROCESSOR(OtsDataSaverConsumer)