aboutsummaryrefslogtreecommitdiff
path: root/include/cru/common/platform/unix
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-06-24 00:06:25 +0800
committercrupest <crupest@outlook.com>2024-07-21 13:45:23 +0800
commit5f0d7dc36a7a0091bfc152be9f06730cd08eb4dd (patch)
tree72ded26e72272dc2f7edf29146b907e52784ad6a /include/cru/common/platform/unix
parente532469ca8844bf4daff8d462f80abdd776c018f (diff)
downloadcru-5f0d7dc36a7a0091bfc152be9f06730cd08eb4dd.tar.gz
cru-5f0d7dc36a7a0091bfc152be9f06730cd08eb4dd.tar.bz2
cru-5f0d7dc36a7a0091bfc152be9f06730cd08eb4dd.zip
feat: reimplement subprocess without template.
NEED TEST: BufferStream, AutoReadStream, SubProcess.
Diffstat (limited to 'include/cru/common/platform/unix')
-rw-r--r--include/cru/common/platform/unix/PosixSpawnSubProcess.h17
1 files changed, 8 insertions, 9 deletions
diff --git a/include/cru/common/platform/unix/PosixSpawnSubProcess.h b/include/cru/common/platform/unix/PosixSpawnSubProcess.h
index d4df284b..ee4e912a 100644
--- a/include/cru/common/platform/unix/PosixSpawnSubProcess.h
+++ b/include/cru/common/platform/unix/PosixSpawnSubProcess.h
@@ -16,20 +16,21 @@
#include <spawn.h>
namespace cru::platform::unix {
-class PosixSpawnSubProcessImpl {
+class PosixSpawnSubProcessImpl : public Object,
+ public virtual IPlatformSubProcessImpl {
CRU_DEFINE_CLASS_LOG_TAG(u"PosixSpawnSubProcess")
public:
explicit PosixSpawnSubProcessImpl();
~PosixSpawnSubProcessImpl();
- io::Stream* GetStdinStream();
- io::Stream* GetStdoutStream();
- io::Stream* GetStderrStream();
+ void PlatformCreateProcess(const SubProcessStartInfo& start_info) override;
+ SubProcessExitResult PlatformWaitForProcess() override;
+ void PlatformKillProcess() override;
- void PlatformCreateProcess(const SubProcessStartInfo& start_info);
- SubProcessExitResult PlatformWaitForProcess();
- void PlatformKillProcess();
+ io::Stream* GetStdinStream() override;
+ io::Stream* GetStdoutStream() override;
+ io::Stream* GetStderrStream() override;
private:
pid_t pid_;
@@ -46,6 +47,4 @@ class PosixSpawnSubProcessImpl {
std::unique_ptr<io::AutoReadStream> stdout_buffer_stream_;
std::unique_ptr<io::AutoReadStream> stderr_buffer_stream_;
};
-
-using PosixSpawnSubProcess = PlatformSubProcess<PosixSpawnSubProcessImpl>;
} // namespace cru::platform::unix