MemoryMappedFileStreamUnix.h MemoryMappedFileStream.cpp //CopyrightEpicGames,Inc.AllRightsReserved. #pragmaonce //*INDENT-OFF* #ifdefTRIO_MMAP_AVAILABLE #include"trio/streams/MemoryMappedFileStream.h" #include"trio/streams/StreamStatus.h" #include"trio/types/Aliases.h" #include"trio/utils/NativeString.h" #include<pma/TypeDefs.h> #include<cstdint> namespacetrio{ classMemoryMappedFileStreamUnix:publicMemoryMappedFileStream{ public: MemoryMappedFileStreamUnix(constchar*path_,AccessModeaccessMode_,MemoryResource*memRes_); ~MemoryMappedFileStreamUnix(); MemoryMappedFileStreamUnix(constMemoryMappedFileStreamUnix&)=delete; MemoryMappedFileStreamUnix&operator=(constMemoryMappedFileStreamUnix&)=delete; MemoryMappedFileStreamUnix(MemoryMappedFileStreamUnix&&)=delete; MemoryMappedFileStreamUnix&operator=(MemoryMappedFileStreamUnix&&)=delete; voidopen()override; voidclose()override; std::uint64_ttell()override; voidseek(std::uint64_tposition)override; std::uint64_tsize()override; std::size_tread(char*destination,std::size_tsize)override; std::size_tread(Writable*destination,std::size_tsize)override; std::size_twrite(constchar*source,std::size_tsize)override; std::size_twrite(Readable*source,std::size_tsize)override; voidflush()override; voidresize(std::uint64_tsize)override; MemoryResource*getMemoryResource(); private: voidopenFile(); voidcloseFile(); voidmapFile(std::uint64_toffset,std::uint64_tsize); voidunmapFile(); voidresizeFile(std::uint64_tsize); private: StreamStatusstatus; NativeStringfilePath; AccessModefileAccessMode; MemoryResource*memRes; intfile; void*data; std::uint64_tposition; std::uint64_tfileSize; std::uint64_tviewOffset; std::size_tviewSize; booldelayedMapping; booldirty; }; }//namespacetrio #endif//TRIO_MMAP_AVAILABLE //*INDENT-ON*