aboutsummaryrefslogtreecommitdiff
path: root/src/common/io/AutoReadStream.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-10-06 13:57:39 +0800
committercrupest <crupest@outlook.com>2024-10-06 13:57:39 +0800
commitdfe62dcf8bcefc523b466e127c3edc4dc2756629 (patch)
tree1c751a14ba0da07ca2ff805633f97568060aa4c9 /src/common/io/AutoReadStream.cpp
parentf51eb955e188858272230a990565931e7403f23b (diff)
downloadcru-dfe62dcf8bcefc523b466e127c3edc4dc2756629.tar.gz
cru-dfe62dcf8bcefc523b466e127c3edc4dc2756629.tar.bz2
cru-dfe62dcf8bcefc523b466e127c3edc4dc2756629.zip
Rename common to base.
Diffstat (limited to 'src/common/io/AutoReadStream.cpp')
-rw-r--r--src/common/io/AutoReadStream.cpp56
1 files changed, 0 insertions, 56 deletions
diff --git a/src/common/io/AutoReadStream.cpp b/src/common/io/AutoReadStream.cpp
deleted file mode 100644
index 18bc18da..00000000
--- a/src/common/io/AutoReadStream.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "cru/common/io/AutoReadStream.h"
-#include "cru/common/io/Stream.h"
-
-#include <thread>
-
-namespace cru::io {
-
-AutoReadStream::AutoReadStream(Stream* stream, bool auto_delete,
- const AutoReadStreamOptions& options)
- : Stream(false, true, stream->CanSeek()) {
- auto buffer_stream_options = options.GetBufferStreamOptions();
- stream_ = stream;
- size_per_read_ = buffer_stream_options.GetBlockSizeOrDefault();
- buffer_stream_ = std::make_unique<BufferStream>(buffer_stream_options);
- background_thread_ = std::thread(&AutoReadStream::BackgroundThreadRun, this);
-}
-
-AutoReadStream::~AutoReadStream() {
- if (auto_delete_) {
- delete stream_;
- }
-}
-
-Index AutoReadStream::DoRead(std::byte* buffer, Index offset, Index size) {
- std::unique_lock lock(buffer_stream_mutex_);
- return buffer_stream_->Read(buffer, offset, size);
-}
-
-Index AutoReadStream::DoWrite(const std::byte* buffer, Index offset,
- Index size) {
- return stream_->Write(buffer, offset, size);
-}
-
-void AutoReadStream::DoFlush() { stream_->Flush(); }
-
-void AutoReadStream::DoClose() {}
-
-void AutoReadStream::BackgroundThreadRun() {
- std::vector<std::byte> buffer(size_per_read_);
- while (true) {
- try {
- auto read = stream_->Read(buffer.data(), buffer.size());
- if (read == 0) {
- buffer_stream_->SetEof();
- break;
- } else {
- buffer_stream_->Write(buffer.data(), read);
- }
- } catch (const StreamAlreadyClosedException& exception) {
- buffer_stream_->SetEof();
- break;
- }
- }
-}
-
-} // namespace cru::io