diff options
Diffstat (limited to 'src/common/io/AutoReadStream.cpp')
-rw-r--r-- | src/common/io/AutoReadStream.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/common/io/AutoReadStream.cpp b/src/common/io/AutoReadStream.cpp new file mode 100644 index 00000000..7cdc1268 --- /dev/null +++ b/src/common/io/AutoReadStream.cpp @@ -0,0 +1,36 @@ +#include "cru/common/io/AutoReadStream.h" +#include <vector> +#include "cru/common/io/Stream.h" + +namespace cru::io { + +AutoReadStream::AutoReadStream(Stream* stream, bool auto_delete, + const AutoReadStreamOptions& options) { + background_thread_ = std::thread(&AutoReadStream::BackgroundThreadRun, this); +} + +bool AutoReadStream::CanSeek() { return false; } + +Index AutoReadStream::Seek(Index offset, SeekOrigin origin) { + throw StreamOperationNotSupportedException( + u"AutoReadStream does not support seek."); +} + +bool AutoReadStream::CanWrite() { return stream_->CanWrite(); } + +Index AutoReadStream::Write(const std::byte* buffer, Index offset, Index size) { + return stream_->Write(buffer, offset, size); +} + +void AutoReadStream::Flush() { stream_->Flush(); } + +void AutoReadStream::BackgroundThreadRun() { + std::unique_lock<std::mutex> lock(buffer_mutex_); + std::vector<std::byte>* buffer = nullptr; + if (!buffer_list_.empty()) { + } + stream_->Read(); +} +} + +} // namespace cru::io |