00001 #ifndef FILEREADOUTFORMAT_DATASEPARATORRECORD_H 00002 #define FILEREADOUTFORMAT_DATASEPARATORRECORD_H 00003 00004 /* 00005 * DataSeparatorRecord.h 00006 * FileReadoutFormat 00007 * 00008 * Created by Simon Patton on 7/18/10. 00009 * Copyright 2010 DayaBay Collaboration. All rights reserved. 00010 * 00011 */ 00012 00013 namespace DybDaq { 00014 class ByteBuffer; 00015 class EventReadout; 00016 } 00017 00018 #include "FileReadoutFormat/FileBuffer.h" 00019 00020 namespace DybDaq { 00021 00022 class DataSeparatorRecord : public FileBuffer { 00023 00024 public: 00025 00029 DataSeparatorRecord(const EventReadout& block, 00030 unsigned int blockNumber, 00031 const FileTraits& traits); 00032 00036 DataSeparatorRecord(const ByteBuffer& byteBuffer, 00037 const FileTraits& traits); 00038 00042 virtual ~DataSeparatorRecord(); 00043 00047 virtual bool isMarked(unsigned int marker) const; 00048 00052 const EventReadout& block() const; 00053 00057 const EventReadout* extractBlock() const; 00058 00062 unsigned int blockNumber() const; 00063 00067 unsigned int blockLength() const; 00068 00072 void setBlock(const EventReadout* block); 00073 00078 virtual unsigned int gather(OutputBufferList& outputBuffers) const; 00079 00080 protected: 00081 00085 virtual unsigned int formatComponent() const; 00086 00087 private: 00088 00092 DataSeparatorRecord(); 00093 00097 DataSeparatorRecord(DataSeparatorRecord& rhs); 00098 00102 DataSeparatorRecord& operator=(DataSeparatorRecord& rhs); 00103 00107 void setBlockNumber(unsigned int blockNumber); 00108 00112 void setBlockLength(unsigned int blockLength); 00113 00117 const EventReadout* m_block; 00118 00122 mutable bool m_owner; 00123 00124 }; 00125 00126 } 00127 00128 #endif // FILEREADOUTFORMAT_DATASEPARATORRECORD_H