#ifndef _COMMON_MMAP_HPP_ #define _COMMON_MMAP_HPP_ #include #include #include #include #include #include class MemoryMappedFile { public: enum CreationFlags{ReadOnly,ReadWrite}; MemoryMappedFile(const String& pathFileName,CreationFlags creationFlags); virtual ~MemoryMappedFile(); bool open(const String& pathFileName,CreationFlags creationFlags); bool readLine(String &strLine); char readChar(void); bool eof(void); char peekChar(void); void close(void); bool isOkay(void); off_t tell(void); private: enum {CarriageReturn=0x0D,LineFeed=0x0A,NullChar=0x00}; enum {BlockSize=65536}; bool createMemoryMap(void); int getFileAccessFromFlags(CreationFlags creationFlags)const; int getMemoryMapAccessFromFlags(CreationFlags creationFlags)const; int mFD = -1; unsigned long mIndex; off_t mFileLength = -1; char *mlpMappedDataBase = 0; CreationFlags mCreationFlags; }; /// @brief /// @param pathFileName /// @param access inline MemoryMappedFile::MemoryMappedFile(const String& pathFileName,CreationFlags creationFlags) { open(pathFileName, creationFlags); } inline MemoryMappedFile::~MemoryMappedFile() { } inline char MemoryMappedFile::readChar() { return mlpMappedDataBase[mIndex++]; } inline bool MemoryMappedFile::eof() { return mIndex