aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-03-25 13:17:13 +0100
committerDan Engelbrecht <[email protected]>2022-03-31 11:29:28 +0200
commitb4fab3c2d5ff2426489d42ad07f302f90587cc28 (patch)
treed4deee1446e30eda1e26750188f212c406e34bc7
parentclean up old zen cache by default (diff)
downloadzen-b4fab3c2d5ff2426489d42ad07f302f90587cc28.tar.xz
zen-b4fab3c2d5ff2426489d42ad07f302f90587cc28.zip
cleanup
-rw-r--r--zenstore/basicfile.cpp30
-rw-r--r--zenstore/include/zenstore/basicfile.h7
2 files changed, 17 insertions, 20 deletions
diff --git a/zenstore/basicfile.cpp b/zenstore/basicfile.cpp
index 44a7fc77f..0d410c745 100644
--- a/zenstore/basicfile.cpp
+++ b/zenstore/basicfile.cpp
@@ -142,33 +142,27 @@ BasicFile::Close()
void
BasicFile::Read(void* Data, uint64_t BytesToRead, uint64_t FileOffset)
{
- const uint64_t MaxChunkSize = 2u * 1024 * 1024 * 1024;
- uint64_t TotalFileSize = FileSize();
- ZEN_ASSERT((FileOffset + BytesToRead) <= TotalFileSize);
+ const uint64_t MaxChunkSize = 2u * 1024 * 1024 * 1024;
while (BytesToRead)
{
const uint64_t NumberOfBytesToRead = Min(BytesToRead, MaxChunkSize);
- uint64_t NumberOfBytesRead;
#if ZEN_PLATFORM_WINDOWS
OVERLAPPED Ovl{};
Ovl.Offset = DWORD(FileOffset & 0xffff'ffffu);
Ovl.OffsetHigh = DWORD(FileOffset >> 32);
- ZEN_ASSERT((FileOffset + NumberOfBytesToRead) <= TotalFileSize);
DWORD dwNumberOfBytesRead = 0;
BOOL Success = ::ReadFile(m_FileHandle, Data, DWORD(NumberOfBytesToRead), &dwNumberOfBytesRead, &Ovl);
- ZEN_ASSERT((dwNumberOfBytesRead <= NumberOfBytesToRead) && (dwNumberOfBytesRead > 0));
- NumberOfBytesRead = dwNumberOfBytesRead;
+ ZEN_ASSERT(dwNumberOfBytesRead == NumberOfBytesToRead);
#else
static_assert(sizeof(off_t) >= sizeof(uint64_t), "sizeof(off_t) does not support large files");
- int Fd = int(uintptr_t(m_FileHandle));
- int BytesRead = pread(Fd, Data, NumberOfBytesToRead, FileOffset);
- bool Success = (BytesRead > 0);
- NumberOfBytesRead = static_cast<uint64_t>(BytesRead);
+ int Fd = int(uintptr_t(m_FileHandle));
+ int BytesRead = pread(Fd, Data, NumberOfBytesToRead, FileOffset);
+ bool Success = (BytesRead > 0);
#endif
if (!Success)
@@ -176,9 +170,9 @@ BasicFile::Read(void* Data, uint64_t BytesToRead, uint64_t FileOffset)
ThrowLastError(fmt::format("Failed to read from file '{}'", zen::PathFromHandle(m_FileHandle)));
}
- BytesToRead -= NumberOfBytesRead;
- FileOffset += NumberOfBytesRead;
- Data = reinterpret_cast<uint8_t*>(Data) + NumberOfBytesRead;
+ BytesToRead -= NumberOfBytesToRead;
+ FileOffset += NumberOfBytesToRead;
+ Data = reinterpret_cast<uint8_t*>(Data) + NumberOfBytesToRead;
}
}
@@ -366,6 +360,14 @@ BasicFile::MarkAsDeleteOnClose(std::error_code& Ec)
#endif
}
+void*
+BasicFile::Detach()
+{
+ void* FileHandle = m_FileHandle;
+ m_FileHandle = 0;
+ return FileHandle;
+}
+
//////////////////////////////////////////////////////////////////////////
TemporaryFile::~TemporaryFile()
diff --git a/zenstore/include/zenstore/basicfile.h b/zenstore/include/zenstore/basicfile.h
index 8dbcffdfb..ae875bf8a 100644
--- a/zenstore/include/zenstore/basicfile.h
+++ b/zenstore/include/zenstore/basicfile.h
@@ -56,14 +56,9 @@ public:
IoBuffer ReadAll();
void WriteAll(IoBuffer Data, std::error_code& Ec);
void MarkAsDeleteOnClose(std::error_code& Ec);
+ void* Detach();
inline void* Handle() { return m_FileHandle; }
- inline void* Detach()
- {
- void* FileHandle = m_FileHandle;
- m_FileHandle = 0;
- return FileHandle;
- }
protected:
void* m_FileHandle = nullptr; // This is either null or valid