aboutsummaryrefslogtreecommitdiff
path: root/include/cru/common/platform/unix/PosixSpawnSubProcess.h
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-06-24 00:06:25 +0800
committercrupest <crupest@outlook.com>2024-07-20 22:58:10 +0800
commite532469ca8844bf4daff8d462f80abdd776c018f (patch)
tree7182c3a3bb5978f5be7b5f8798eef0bef9c797eb /include/cru/common/platform/unix/PosixSpawnSubProcess.h
parent937e64e8a115a0d6d7e6e2c466b03945b71114bc (diff)
downloadcru-e532469ca8844bf4daff8d462f80abdd776c018f.tar.gz
cru-e532469ca8844bf4daff8d462f80abdd776c018f.tar.bz2
cru-e532469ca8844bf4daff8d462f80abdd776c018f.zip
feat: change subprocess implementation.
NEED TEST: BufferStream, AutoReadStream, SubProcess.
Diffstat (limited to 'include/cru/common/platform/unix/PosixSpawnSubProcess.h')
-rw-r--r--include/cru/common/platform/unix/PosixSpawnSubProcess.h21
1 files changed, 11 insertions, 10 deletions
diff --git a/include/cru/common/platform/unix/PosixSpawnSubProcess.h b/include/cru/common/platform/unix/PosixSpawnSubProcess.h
index 9c303700..d4df284b 100644
--- a/include/cru/common/platform/unix/PosixSpawnSubProcess.h
+++ b/include/cru/common/platform/unix/PosixSpawnSubProcess.h
@@ -16,21 +16,20 @@
#include <spawn.h>
namespace cru::platform::unix {
-class PosixSpawnSubProcess : public PlatformSubProcessBase {
+class PosixSpawnSubProcessImpl {
CRU_DEFINE_CLASS_LOG_TAG(u"PosixSpawnSubProcess")
public:
- explicit PosixSpawnSubProcess(SubProcessStartInfo start_info);
- ~PosixSpawnSubProcess();
+ explicit PosixSpawnSubProcessImpl();
+ ~PosixSpawnSubProcessImpl();
- io::Stream* GetStdinStream() override;
- io::Stream* GetStdoutStream() override;
- io::Stream* GetStderrStream() override;
+ io::Stream* GetStdinStream();
+ io::Stream* GetStdoutStream();
+ io::Stream* GetStderrStream();
- protected:
- void PlatformCreateProcess() override;
- SubProcessExitResult PlatformWaitForProcess() override;
- void PlatformKillProcess() override;
+ void PlatformCreateProcess(const SubProcessStartInfo& start_info);
+ SubProcessExitResult PlatformWaitForProcess();
+ void PlatformKillProcess();
private:
pid_t pid_;
@@ -47,4 +46,6 @@ class PosixSpawnSubProcess : public PlatformSubProcessBase {
std::unique_ptr<io::AutoReadStream> stdout_buffer_stream_;
std::unique_ptr<io::AutoReadStream> stderr_buffer_stream_;
};
+
+using PosixSpawnSubProcess = PlatformSubProcess<PosixSpawnSubProcessImpl>;
} // namespace cru::platform::unix