summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/MappedFile.h
diff options
context:
space:
mode:
Diffstat (limited to 'view/sharedcache/core/MappedFile.h')
-rw-r--r--view/sharedcache/core/MappedFile.h86
1 files changed, 0 insertions, 86 deletions
diff --git a/view/sharedcache/core/MappedFile.h b/view/sharedcache/core/MappedFile.h
deleted file mode 100644
index ced79f52..00000000
--- a/view/sharedcache/core/MappedFile.h
+++ /dev/null
@@ -1,86 +0,0 @@
-#pragma once
-
-#include <string>
-#include <cstdint>
-#include <cstdio>
-#include <optional>
-
-// Call this when initializing the plugin so that the process file descriptor limit is raised.
-uint64_t AdjustFileDescriptorLimit();
-
-enum MapStatus : int
-{
- Success,
- // TODO: Split this error out into more contextual errors.
- Error,
-};
-
-struct MappedFile
-{
- uint8_t* _mmap = nullptr;
- size_t len = 0;
-
-#ifdef _MSC_VER
- HANDLE hFile = INVALID_HANDLE_VALUE;
-#else
- FILE* fd = nullptr;
-#endif
-
- MappedFile() = default;
-
- ~MappedFile();
-
- MappedFile(const MappedFile&) = delete;
-
- MappedFile& operator=(const MappedFile&) = delete;
-
- MappedFile(MappedFile&& other) noexcept : _mmap(other._mmap), len(other.len)
- {
-#ifdef _MSC_VER
- hFile = other.hFile;
- // Don't close the hFile in the move.
- other.hFile = nullptr;
-#else
- fd = other.fd;
- // Don't close the fd in the move.
- other.fd = nullptr;
-#endif
- other._mmap = nullptr;
- }
-
- // I hate C++
- MappedFile& operator=(MappedFile&& other) noexcept
- {
- if (this != &other)
- {
- Unmap();
-#ifdef _MSC_VER
- if (hFile != nullptr)
- {
- CloseHandle(hFile);
- }
- hFile = other.hFile;
- // Don't close the hFile in the move.
- other.hFile = nullptr;
-#else
- if (fd != nullptr)
- {
- fclose(fd);
- }
- fd = other.fd;
- // Don't close the fd in the move.
- other.fd = nullptr;
-#endif
- len = other.len;
- _mmap = other._mmap;
- other._mmap = nullptr;
- }
- return *this;
- }
-
- static std::optional<MappedFile> OpenFile(const std::string& path);
-
- MapStatus Map();
-
- MapStatus Unmap();
-};