NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
file_mapper.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_FILE_FILE_MAPPER_HPP__
2#define NEFORCE_CORE_FILE_FILE_MAPPER_HPP__
3
11
14NEFORCE_BEGIN_NAMESPACE__
15
21
45class NEFORCE_API file_mapper {
46public:
47#ifdef NEFORCE_PLATFORM_WINDOWS
48 using size_type = ::DWORD;
49#else
50 using size_type = size_t;
51#endif
52
54
61 struct map_info {
62 void* address = nullptr;
65 file_access access = file_access::READ;
66 bool is_mapped = false;
67 };
68
69private:
70 native_handle_type file_handle_;
71 void* ptr_ = nullptr;
72 size_type size_ = 0;
73 size_type offset_ = 0;
74 file_access access_ = file_access::READ;
75 mutable mutex mutex_;
76
77#ifdef NEFORCE_PLATFORM_WINDOWS
78 native_handle_type mapping_handle_ = INVALID_HANDLE_VALUE;
79#endif
80
81public:
89 explicit file_mapper(native_handle_type file_handle);
90
97
98 file_mapper(const file_mapper&) = delete;
99 file_mapper& operator=(const file_mapper&) = delete;
100
105 file_mapper(file_mapper&& other) noexcept;
106
113
129 bool map(size_type offset = 0, size_type size = 0, file_access access = file_access::READ,
131
137 void unmap() noexcept;
138
148 bool remap(size_type new_offset, size_type new_size);
149
158 bool flush(bool async = false) noexcept;
159
171 bool lock_pages(bool lock_in_memory) const noexcept;
172
176 NEFORCE_NODISCARD void* data() const noexcept { return ptr_; }
177
181 NEFORCE_NODISCARD size_type size() const noexcept { return size_; }
182
186 NEFORCE_NODISCARD size_type offset() const noexcept { return offset_; }
187
191 NEFORCE_NODISCARD file_access access() const noexcept { return access_; }
192
196 NEFORCE_NODISCARD bool is_mapped() const noexcept { return ptr_ != nullptr; }
197
201 NEFORCE_NODISCARD map_info info() const noexcept;
202};
203 // File
205
206NEFORCE_END_NAMESPACE__
207#endif // NEFORCE_CORE_FILE_FILE_MAPPER_HPP__
bool lock_pages(bool lock_in_memory) const noexcept
锁定/解锁映射页到物理内存
NEFORCE_NODISCARD void * data() const noexcept
获取映射起始地址指针
file_mapper(file_mapper &&other) noexcept
移动构造函数
NEFORCE_NODISCARD size_type offset() const noexcept
获取映射偏移
size_t size_type
大小类型
file_mapper(native_handle_type file_handle)
构造函数
~file_mapper()
析构函数
NEFORCE_NODISCARD file_access access() const noexcept
获取访问权限
void unmap() noexcept
解除映射
NEFORCE_NODISCARD size_type size() const noexcept
获取映射字节大小
_NEFORCE native_handle_type native_handle_type
原生文件句柄类型
file_mapper & operator=(file_mapper &&other) noexcept
移动赋值运算符
bool flush(bool async=false) noexcept
刷新映射区域到磁盘
bool map(size_type offset=0, size_type size=0, file_access access=file_access::READ, file_map_hint hint=file_map_hint::SEQUENTIAL)
映射文件到内存
bool remap(size_type new_offset, size_type new_size)
重新映射到新区域
NEFORCE_NODISCARD bool is_mapped() const noexcept
检查是否已映射
NEFORCE_NODISCARD map_info info() const noexcept
获取映射状态快照
非递归互斥锁
文件操作常量定义
NEFORCE_NODISCARD future< async_result_t< Func, Args... > > async(launch policy, Func &&function, Args &&... args)
异步执行函数(指定策略)
file_map_hint
内存映射文件访问提示枚举
@ SEQUENTIAL
顺序访问模式
uint64_t size_t
无符号大小类型
互斥锁
file_access access
访问权限
size_type offset
映射起始偏移
bool is_mapped
是否已映射
void * address
映射起始地址
size_type size
映射大小(字节)