diff options
Diffstat (limited to 'include/cru')
-rw-r--r-- | include/cru/common/SubProcess.h | 6 | ||||
-rw-r--r-- | include/cru/common/platform/unix/PosixSpawnSubProcess.h | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/include/cru/common/SubProcess.h b/include/cru/common/SubProcess.h index b31bc071..8e5e49f5 100644 --- a/include/cru/common/SubProcess.h +++ b/include/cru/common/SubProcess.h @@ -112,9 +112,9 @@ class PlatformSubProcessBase : public Object { */ PlatformSubProcessExitResult GetExitResult(); - io::Stream* GetStdinStream(); - io::Stream* GetStdoutStream(); - io::Stream* GetStderrStream(); + virtual io::Stream* GetStdinStream() = 0; + virtual io::Stream* GetStdoutStream() = 0; + virtual io::Stream* GetStderrStream() = 0; protected: /** diff --git a/include/cru/common/platform/unix/PosixSpawnSubProcess.h b/include/cru/common/platform/unix/PosixSpawnSubProcess.h index 0a0f0ad4..9a08daa6 100644 --- a/include/cru/common/platform/unix/PosixSpawnSubProcess.h +++ b/include/cru/common/platform/unix/PosixSpawnSubProcess.h @@ -5,6 +5,7 @@ #ifdef CRU_PLATFORM_UNIX #include "../../SubProcess.h" +#include "../../io/AutoReadStream.h" #include "UnixFileStream.h" #include "UnixPipe.h" @@ -17,6 +18,10 @@ class PosixSpawnSubProcess : public PlatformSubProcessBase { explicit PosixSpawnSubProcess(const PlatformSubProcessStartInfo& start_info); ~PosixSpawnSubProcess(); + io::Stream* GetStdinStream() override; + io::Stream* GetStdoutStream() override; + io::Stream* GetStderrStream() override; + protected: void PlatformCreateProcess() override; PlatformSubProcessExitResult PlatformWaitForProcess() override; @@ -33,6 +38,9 @@ class PosixSpawnSubProcess : public PlatformSubProcessBase { std::unique_ptr<UnixFileStream> stdin_stream_; std::unique_ptr<UnixFileStream> stdout_stream_; std::unique_ptr<UnixFileStream> stderr_stream_; + + std::unique_ptr<io::AutoReadStream> stdout_buffer_stream_; + std::unique_ptr<io::AutoReadStream> stderr_buffer_stream_; }; } // namespace cru::platform::unix |