@@ 13,11 13,14 @@ FileContext::FileContext(
}
file = std::fopen(path.c_str(), openMode.c_str());
-
if (!file) {
throw std::runtime_error("File open error");
}
+ constexpr size_t streamBufferSize = 16384;
+ streamBuffer = std::make_unique<char[]>(streamBufferSize);
+ setvbuf(file, streamBuffer.get(), _IOFBF, streamBufferSize);
+
runningCrc32Digest.reset();
}
@@ 43,6 43,7 @@ class FileContext
std::size_t offset{};
std::size_t chunkSize{};
CRC32 runningCrc32Digest;
+ std::unique_ptr<char[]> streamBuffer;
};
class FileReadContext : public FileContext