MemoryMappedFile.h++
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __ccxx_MemoryMappedFile_hxx
00024 #define __ccxx_MemoryMappedFile_hxx
00025
00026 #include <commonc++/Common.h++>
00027 #include <commonc++/IOException.h++>
00028 #include <commonc++/Permissions.h++>
00029
00030 namespace ccxx {
00031
00037 class COMMONCPP_API MemoryMappedFile
00038 {
00039 public:
00040
00045 MemoryMappedFile(const String &path);
00046
00049 ~MemoryMappedFile() throw();
00050
00064 void open(uint64_t size = 0, bool readOnly = false) throw(IOException);
00065
00067 void close() throw();
00068
00075 void sync(bool async = false) throw(IOException);
00076
00078 inline byte_t *getBase() throw()
00079 { return(_base); }
00080
00082 inline const byte_t *getBase() const throw()
00083 { return(_base); }
00084
00086 inline uint64_t getSize() const throw()
00087 { return(_size); }
00088
00089 private:
00090
00091 String _path;
00092 FileHandle _handle;
00093 #ifdef CCXX_OS_WINDOWS
00094 HANDLE _memHandle;
00095 #endif
00096 byte_t *_base;
00097 uint64_t _size;
00098 bool _open;
00099 };
00100
00101 };
00102
00103 #endif // __ccxx_MemoryMappedFile_hxx
00104
00105