diff options
| author | Stefan Boberg <[email protected]> | 2021-09-27 12:34:52 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-27 12:34:52 +0200 |
| commit | f0036eada7f6bcf6e08afe3ea8517367ed73450e (patch) | |
| tree | b1ce3466bba36175cad369028fad1b410a34b5ec /zencore/iobuffer.cpp | |
| parent | Fixed httpsys Windows compilation error (diff) | |
| parent | GetWindowsErrorAsString() -> GetSystemErrorAsString() (diff) | |
| download | zen-f0036eada7f6bcf6e08afe3ea8517367ed73450e.tar.xz zen-f0036eada7f6bcf6e08afe3ea8517367ed73450e.zip | |
Merged latest from main
Diffstat (limited to 'zencore/iobuffer.cpp')
| -rw-r--r-- | zencore/iobuffer.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/zencore/iobuffer.cpp b/zencore/iobuffer.cpp index 5d3458dba..a730a316f 100644 --- a/zencore/iobuffer.cpp +++ b/zencore/iobuffer.cpp @@ -5,6 +5,7 @@ #include <zencore/except.h> #include <zencore/filesystem.h> #include <zencore/fmtutils.h> +#include <zencore/iohash.h> #include <zencore/logging.h> #include <zencore/memory.h> #include <zencore/testing.h> @@ -36,7 +37,7 @@ IoBufferCore::AllocateBuffer(size_t InSize, size_t Alignment) return VirtualAlloc(nullptr, InSize, MEM_COMMIT, PAGE_READWRITE); } else -#endif // ZEN_PLATFORM_WINDOWS +#endif // ZEN_PLATFORM_WINDOWS { return Memory::Alloc(InSize, Alignment); } @@ -51,7 +52,7 @@ IoBufferCore::FreeBuffer() VirtualFree(const_cast<void*>(m_DataPtr), 0, MEM_DECOMMIT); } else -#endif // ZEN_PLATFORM_WINDOWS +#endif // ZEN_PLATFORM_WINDOWS { return Memory::Free(const_cast<void*>(m_DataPtr)); } @@ -183,7 +184,7 @@ IoBufferExtendedCore::~IoBufferExtendedCore() #if ZEN_PLATFORM_WINDOWS BOOL Success = CloseHandle(m_FileHandle); #else - int Fd = int(uintptr_t(m_FileHandle)); + int Fd = int(uintptr_t(m_FileHandle)); bool Success = (close(Fd) == 0); #endif @@ -241,17 +242,17 @@ IoBufferExtendedCore::Materialize() const /* FileOffsetLow */ uint32_t(MapOffset & 0xffFFffFFu), /* dwNumberOfBytesToMap */ MapSize); #else - m_MmapHandle = (void*)uintptr_t(~MapSize); // ~ so it's never null (assuming MapSize >= 0) + m_MmapHandle = (void*)uintptr_t(~MapSize); // ~ so it's never null (assuming MapSize >= 0) m_Flags |= kOwnsMmap; void* MappedBase = mmap( /* addr */ nullptr, /* length */ MapSize, /* prot */ PROT_READ, - /* flags */ MAP_SHARED|MAP_NORESERVE, + /* flags */ MAP_SHARED | MAP_NORESERVE, /* fd */ int(uintptr_t(m_FileHandle)), /* offset */ MapOffset); -#endif // ZEN_PLATFORM_WINDOWS +#endif // ZEN_PLATFORM_WINDOWS if (MappedBase == nullptr) { @@ -378,7 +379,7 @@ IoBufferBuilder::MakeFromFile(const path_char_t* FileName, uint64_t Offset, uint struct stat Stat; fstat(Fd, &Stat); FileSize = Stat.st_size; -#endif // ZEN_PLATFORM_WINDOWS +#endif // ZEN_PLATFORM_WINDOWS // TODO: should validate that offset is in range @@ -415,7 +416,7 @@ IoBuffer IoBufferBuilder::MakeFromTemporaryFile(const path_char_t* FileName) { uint64_t FileSize; - void* Handle; + void* Handle; #if ZEN_PLATFORM_WINDOWS CAtlFile DataFile; @@ -447,7 +448,7 @@ IoBufferBuilder::MakeFromTemporaryFile(const path_char_t* FileName) FileSize = Stat.st_size; Handle = (void*)uintptr_t(Fd); -#endif // ZEN_PLATFORM_WINDOWS +#endif // ZEN_PLATFORM_WINDOWS IoBuffer Iob(IoBuffer::File, Handle, 0, FileSize); Iob.m_Core->SetIsWholeFile(true); @@ -455,6 +456,13 @@ IoBufferBuilder::MakeFromTemporaryFile(const path_char_t* FileName) return Iob; } +IoHash +HashBuffer(IoBuffer& Buffer) +{ + // TODO: handle disk buffers with special path + return IoHash::HashBuffer(Buffer.Data(), Buffer.Size()); +} + ////////////////////////////////////////////////////////////////////////// #if ZEN_WITH_TESTS |