00001 #ifndef FILEREADOUTFORMAT_DAQTOFSTREAM_H 00002 #define FILEREADOUTFORMAT_DAQTOFSTREAM_H 00003 00004 /* 00005 * DaqToFStream.h 00006 * FileReadoutFormat 00007 * 00008 * Created by Simon Patton on 7/18/10. 00009 * Copyright 2010 DayaBay Collaboration. All rights reserved. 00010 * 00011 */ 00012 #include <fstream> 00013 #include <string> 00014 00015 #include "FileReadoutFormat/FileTraits.h" 00016 00017 namespace DybDaq { 00018 class FileStartRecord; 00019 } 00020 00021 #include "FileReadoutFormat/DaqToOStream.h" 00022 00023 namespace DybDaq { 00024 00025 class DaqToFStream : public DaqToOStream { 00026 00027 public: 00028 00032 DaqToFStream(const FileTraits& traits); 00033 00037 DaqToFStream(const FileTraits& traits, 00038 std::string& fileDir); 00039 00043 virtual ~DaqToFStream(); 00044 00048 bool openFile(const std::string& fileName, 00049 const FileStartRecord& record); 00050 00054 const FileStartRecord* openFile(const std::string& fileName, 00055 const unsigned int fileNumber, 00056 const FileTraits::FileDateTime& dateTime, 00057 const unsigned int dataBlockLimit, 00058 const unsigned int megabyteLimit); 00059 00060 protected: 00061 00062 virtual std::ostream* openStream(); 00063 00064 virtual void prepareNext(); 00065 00066 virtual void closeStream(std::ostream& stream); 00067 00068 private: 00069 00073 DaqToFStream(); 00074 00078 DaqToFStream(DaqToFStream& rhs); 00079 00083 DaqToFStream& operator=(DaqToFStream& rhs); 00084 00088 void createNextFileName(); 00089 00093 const FileStartRecord* openFile(const std::string& fileName, 00094 const FileTraits::FileDateTime& dateTime); 00095 00099 std::ofstream* m_ofstream; 00100 00104 std::string* m_fileDir; 00105 00109 std::string* m_fileName; 00110 }; 00111 00112 } 00113 00114 #endif // FILEREADOUTFORMAT_DAQTOFSTREAM_H