2222#include < fairmq/Parts.h>
2323#include < fairmq/Device.h>
2424#include < Framework/OutputRoute.h>
25- #include < boost/filesystem.hpp>
26- #include < boost/iostreams/device/mapped_file.hpp>
25+ #include " TFReaderDD/BinFileOp.h"
26+ // RSREM
27+ // #include <boost/filesystem.hpp>
28+ // #include <boost/iostreams/device/mapped_file.hpp>
2729#include < fstream>
2830#include < vector>
2931#include < unordered_map>
@@ -47,34 +49,20 @@ class SubTimeFrameFileReader
4749
4850 SubTimeFrameFileReader () = delete ;
4951 SubTimeFrameFileReader (const std::string& pFileName, o2::detectors::DetID::mask_t detMask, int verb, bool sup0xccdb, bool repaireHeaders, bool rejectDistSTF);
50- ~SubTimeFrameFileReader ();
52+ ~SubTimeFrameFileReader () = default ;
5153
5254 // / Read a single TF from the file
5355 std::unique_ptr<MessagesPerRoute> read (fair::mq::Device* device, const std::vector<o2f::OutputRoute>& outputRoutes, const std::string& rawChannel, size_t slice);
5456
55- // / Tell the current position of the file
56- inline std::uint64_t position () const { return mFileMapOffset ; }
57-
58- // / Set the current position of the file
59- inline void set_position (std::uint64_t pPos)
60- {
61- const std::uint64_t lPos = std::min (pPos, mFileSize );
62- assert (pPos == lPos);
63- mFileMapOffset = lPos;
64- }
65-
66- // / Is the stream position at EOF
67- inline bool eof () const { return mFileMapOffset == mFileSize ; }
68-
69- // / Tell the size of the file
70- inline std::uint64_t size () const { return mFileSize ; }
71-
7257 private:
73- std::string mFileName ;
7458 std::unordered_map<o2::header::DataOrigin, bool > mDetOrigMap ;
75- boost::iostreams::mapped_file_source mFileMap ;
76- std::uint64_t mFileMapOffset = 0 ;
77- std::uint64_t mFileSize = 0 ;
59+
60+ std::unique_ptr<BinFileOp> mFile ;
61+ // RSREM
62+ // std::string mFileName;
63+ // boost::iostreams::mapped_file_source mFileMap;
64+ // std::uint64_t mFileMapOffset = 0;
65+ // std::uint64_t mFileSize = 0;
7866
7967 int mVerbosity = 0 ;
8068 bool mSup0xccdb = true ;
@@ -84,55 +72,19 @@ class SubTimeFrameFileReader
8472 const std::string describeHeader (const o2::header::DataHeader& hd, bool full = false ) const ;
8573
8674 // helper to make sure written chunks are buffered, only allow pointers
87- template <typename pointer,
88- typename = std::enable_if_t <std::is_pointer<pointer>::value>>
89- bool read_advance (pointer pPtr, std::uint64_t pLen)
75+ template <typename pointer, typename = std::enable_if_t <std::is_pointer<pointer>::value>>
76+ inline bool read_advance (pointer pPtr, std::uint64_t pLen)
9077 {
91- if (!mFileMap . is_open () ) {
78+ if (!mFile ) {
9279 return false ;
9380 }
94-
95- assert (mFileMapOffset <= mFileSize );
96- const std::uint64_t lToRead = std::min (pLen, mFileSize - mFileMapOffset );
97-
98- if (lToRead != pLen) {
99- LOGP (error, " FileReader: request to read beyond the file end. pos={} size={} len={}" ,
100- mFileMapOffset , mFileSize , pLen);
101- LOGP (error, " Closing the file {}. The read data is invalid." , mFileName );
102- mFileMap .close ();
103- mFileMapOffset = 0 ;
104- mFileSize = 0 ;
105- return false ;
106- }
107-
108- std::memcpy (reinterpret_cast <char *>(pPtr), mFileMap .data () + mFileMapOffset , lToRead);
109- mFileMapOffset += lToRead;
110- return true ;
81+ return mFile ->read_advance (pPtr, pLen);
11182 }
11283
11384 // return the pointer
114- unsigned char * peek () const
115- {
116- return const_cast <unsigned char *>(reinterpret_cast <const unsigned char *>(mFileMap .data () + mFileMapOffset ));
117- }
85+ // inline unsigned char* peek() { mFile->peek(); }
11886
119- inline bool ignore_nbytes (const std::size_t pLen)
120- {
121- const std::size_t lToIgnore = std::min (pLen, std::size_t (mFileSize - mFileMapOffset ));
122- if (pLen != lToIgnore) {
123- LOGP (error, " FileReader: request to ignore bytes beyond the file end. pos={} size={} len={}" ,
124- mFileMapOffset , mFileSize , pLen);
125- LOGP (error, " Closing the file {}. The read data is invalid." , mFileName );
126- mFileMap .close ();
127- mFileMapOffset = 0 ;
128- mFileSize = 0 ;
129- return false ;
130- }
131-
132- mFileMapOffset += lToIgnore;
133- assert (mFileMapOffset <= mFileSize );
134- return true ;
135- }
87+ // inline bool ignore_nbytes(const std::size_t pLen) { mFle->ignore_nbytes(pLen); }
13688
13789 std::size_t getHeaderStackSize ();
13890 o2::header::Stack getHeaderStack (std::size_t & pOrigsize);
0 commit comments