From 807c1dfe8a897f9c61bf3549ff2566917b53023b Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 24 Jun 2024 00:06:25 +0800 Subject: feat: fix linux build, complete PosixSpawnSubProcess. NEED TEST: BufferStream, AutoReadStream, SubProcess. --- src/common/io/AutoReadStream.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/common/io/AutoReadStream.cpp') diff --git a/src/common/io/AutoReadStream.cpp b/src/common/io/AutoReadStream.cpp index bc43fa81..bee944a5 100644 --- a/src/common/io/AutoReadStream.cpp +++ b/src/common/io/AutoReadStream.cpp @@ -9,7 +9,9 @@ AutoReadStream::AutoReadStream(Stream* stream, bool auto_delete, stream_ = stream; size_per_read_ = buffer_stream_options.GetBlockSizeOrDefault(); buffer_stream_ = std::make_unique(buffer_stream_options); - background_thread_ = std::thread(&AutoReadStream::BackgroundThreadRun, this); + auto background_thread = + std::thread(&AutoReadStream::BackgroundThreadRun, this); + background_thread.detach(); } AutoReadStream::~AutoReadStream() { @@ -43,10 +45,15 @@ void AutoReadStream::Flush() { stream_->Flush(); } void AutoReadStream::Close() { stream_->Close(); } void AutoReadStream::BackgroundThreadRun() { + auto resolver = CreateResolver(); std::vector buffer(size_per_read_); while (true) { try { auto read = stream_->Read(buffer.data(), buffer.size()); + auto self = resolver.Resolve(); + if (!self) { + break; + } if (read == 0) { buffer_stream_->SetEof(); break; -- cgit v1.2.3