aboutsummaryrefslogtreecommitdiff
path: root/include/cru/common
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/common')
-rw-r--r--include/cru/common/SubProcess.h6
-rw-r--r--include/cru/common/platform/unix/PosixSpawnSubProcess.h8
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