mirror of
https://github.com/J-D-K/JKSV.git
synced 2026-09-07 10:06:00 -05:00
Code revisions.
This commit is contained in:
@@ -25,7 +25,7 @@ namespace
|
||||
// clang-format off
|
||||
struct FileThreadStruct : sys::threadpool::DataStruct
|
||||
{
|
||||
BufferQueue bufferQueue{SIZE_QUEUE_LIMIT, SIZE_FILE_BUFFER};
|
||||
BufferQueue bufferQueue{SIZE_QUEUE_LIMIT};
|
||||
fslib::File *source{};
|
||||
};
|
||||
// clang-format on
|
||||
@@ -41,16 +41,10 @@ static void read_thread_function(sys::threadpool::JobData jobData)
|
||||
|
||||
for (int64_t i = 0; i < fileSize;)
|
||||
{
|
||||
ssize_t readSize{};
|
||||
{
|
||||
auto queueGuard = bufferQueue.lock_queue();
|
||||
if (bufferQueue.is_full()) { continue; }
|
||||
|
||||
auto readBuffer = bufferQueue.allocate_buffer();
|
||||
readSize = source.read(readBuffer.get(), SIZE_FILE_BUFFER);
|
||||
bufferQueue.push_to_queue(readBuffer, readSize);
|
||||
}
|
||||
auto chunkBuffer = std::make_unique<sys::Byte[]>(SIZE_FILE_BUFFER);
|
||||
ssize_t readSize = source.read(chunkBuffer.get(), SIZE_FILE_BUFFER);
|
||||
|
||||
while (!bufferQueue.try_push(chunkBuffer, readSize)) { BufferQueue::default_delay(); }
|
||||
i += readSize;
|
||||
}
|
||||
}
|
||||
@@ -80,12 +74,7 @@ void fs::copy_file(const fslib::Path &source, const fslib::Path &destination, sy
|
||||
for (int64_t i = 0; i < sourceSize;)
|
||||
{
|
||||
BufferQueue::QueuePair queuePair{};
|
||||
{
|
||||
auto queueGuard = bufferQueue.lock_queue();
|
||||
if (bufferQueue.is_empty()) { continue; }
|
||||
|
||||
queuePair = bufferQueue.get_front();
|
||||
}
|
||||
while (!bufferQueue.get_front(queuePair)) { BufferQueue::default_delay(); }
|
||||
|
||||
auto &[buffer, bufferSize] = queuePair;
|
||||
destFile.write(buffer.get(), bufferSize);
|
||||
@@ -127,12 +116,7 @@ void fs::copy_file_commit(const fslib::Path &source,
|
||||
for (int64_t i = 0; i < sourceSize;)
|
||||
{
|
||||
BufferQueue::QueuePair queuePair{};
|
||||
{
|
||||
auto queueGuard = bufferQueue.lock_queue();
|
||||
if (bufferQueue.is_empty()) { continue; }
|
||||
|
||||
queuePair = bufferQueue.get_front();
|
||||
}
|
||||
while (!bufferQueue.get_front(queuePair)) { BufferQueue::default_delay(); }
|
||||
|
||||
const auto &[buffer, bufferSize] = queuePair;
|
||||
const bool needsCommit = journalCount + static_cast<int64_t>(bufferSize) >= journalSize;
|
||||
|
||||
@@ -29,13 +29,13 @@ namespace
|
||||
struct ZipReadStruct : sys::threadpool::DataStruct
|
||||
{
|
||||
fslib::File *source{};
|
||||
BufferQueue bufferQueue{SIZE_BUFFER_LIMIT, SIZE_ZIP_BUFFER};
|
||||
BufferQueue bufferQueue{SIZE_BUFFER_LIMIT};
|
||||
};
|
||||
|
||||
struct UnzipReadStruct : sys::threadpool::DataStruct
|
||||
{
|
||||
fs::MiniUnzip *unzip{};
|
||||
BufferQueue bufferQueue{SIZE_BUFFER_LIMIT, SIZE_UNZIP_BUFFER};
|
||||
BufferQueue bufferQueue{SIZE_BUFFER_LIMIT};
|
||||
};
|
||||
// clang-format on
|
||||
} // namespace
|
||||
@@ -51,16 +51,10 @@ static void zip_read_thread_function(sys::threadpool::JobData jobData)
|
||||
|
||||
for (int64_t i = 0; i < fileSize;)
|
||||
{
|
||||
ssize_t readSize{};
|
||||
{
|
||||
auto queueGuard = bufferQueue.lock_queue();
|
||||
if (bufferQueue.is_full()) { continue; }
|
||||
|
||||
auto readBuffer = bufferQueue.allocate_buffer();
|
||||
readSize = source.read(readBuffer.get(), SIZE_ZIP_BUFFER);
|
||||
bufferQueue.push_to_queue(readBuffer, readSize);
|
||||
}
|
||||
auto chunkBuffer = std::make_unique<sys::Byte[]>(SIZE_ZIP_BUFFER);
|
||||
ssize_t readSize = source.read(chunkBuffer.get(), SIZE_ZIP_BUFFER);
|
||||
|
||||
while (!bufferQueue.try_push(chunkBuffer, readSize)) { BufferQueue::default_delay(); }
|
||||
i += readSize;
|
||||
}
|
||||
}
|
||||
@@ -76,16 +70,10 @@ static void unzip_read_thread_function(sys::threadpool::JobData jobData)
|
||||
|
||||
for (int64_t i = 0; i < fileSize;)
|
||||
{
|
||||
ssize_t readSize{};
|
||||
{
|
||||
auto queueGuard = bufferQueue.lock_queue();
|
||||
if (bufferQueue.is_full()) { continue; }
|
||||
|
||||
auto readBuffer = bufferQueue.allocate_buffer();
|
||||
readSize = unzip.read(readBuffer.get(), SIZE_UNZIP_BUFFER);
|
||||
bufferQueue.push_to_queue(readBuffer, readSize);
|
||||
}
|
||||
auto chunkBuffer = std::make_unique<sys::Byte[]>(SIZE_UNZIP_BUFFER);
|
||||
ssize_t readSize = unzip.read(chunkBuffer.get(), SIZE_UNZIP_BUFFER);
|
||||
|
||||
while (!bufferQueue.try_push(chunkBuffer, readSize)) { BufferQueue::default_delay(); }
|
||||
i += readSize;
|
||||
}
|
||||
}
|
||||
@@ -128,12 +116,7 @@ void fs::copy_directory_to_zip(const fslib::Path &source, fs::MiniZip &dest, sys
|
||||
for (int64_t i = 0; i < fileSize;)
|
||||
{
|
||||
BufferQueue::QueuePair queuePair{};
|
||||
{
|
||||
auto queueGuard = bufferQueue.lock_queue();
|
||||
if (bufferQueue.is_empty()) { continue; }
|
||||
|
||||
queuePair = bufferQueue.get_front();
|
||||
}
|
||||
while (!bufferQueue.get_front(queuePair)) { BufferQueue::default_delay(); }
|
||||
|
||||
auto &[buffer, bufferSize] = queuePair;
|
||||
dest.write(buffer.get(), bufferSize);
|
||||
@@ -199,16 +182,10 @@ void fs::copy_zip_to_directory(fs::MiniUnzip &unzip, const fslib::Path &dest, in
|
||||
for (int64_t i = 0; i < fileSize;)
|
||||
{
|
||||
BufferQueue::QueuePair queuePair{};
|
||||
{
|
||||
auto queueGuard = bufferQueue.lock_queue();
|
||||
if (bufferQueue.is_empty()) { continue; }
|
||||
|
||||
queuePair = bufferQueue.get_front();
|
||||
}
|
||||
while (!bufferQueue.get_front(queuePair)) { BufferQueue::default_delay(); }
|
||||
|
||||
auto &[buffer, bufferSize] = queuePair;
|
||||
|
||||
const bool commitNeeded = needCommits && journalCount + static_cast<int64_t>(bufferSize) >= journalSize;
|
||||
const bool commitNeeded = needCommits && journalCount + static_cast<int64_t>(bufferSize) >= journalSize;
|
||||
if (commitNeeded)
|
||||
{
|
||||
destFile.close();
|
||||
|
||||
Reference in New Issue
Block a user