dfx 0.1.0
Linux-based dynamic dataflow executor
Loading...
Searching...
No Matches
ProcessFactory.hpp
1// SPDX-FileCopyrightText: 2025 Vincent Leroy
2// SPDX-License-Identifier: MIT
3//
4// This file is part of dfx.
5//
6// Licensed under the MIT License. See the LICENSE file in the project root
7// for full license information.
8
9#pragma once
10
11// Project includes
12#include "Process.hpp"
13
14namespace dfx::FdWatch
15{
16class Poller;
17} // !namespace dfx::FdWatch
18
19namespace dfx::Subprocess
20{
39{
40public:
52 Process build(FdWatch::Poller & poller) { return Process(poller, std::move(_config)); }
53
63 Process::Config buildConfig() { return std::move(_config); }
64
65public:
69 ProcessFactory & setBin(fs::path p) noexcept { _config.bin = std::move(p); return *this; }
73 ProcessFactory & setArgs(std::vector<std::string> args) noexcept { _config.args = std::move(args); return *this; }
77 ProcessFactory & setEnv(std::vector<std::string> env) noexcept { _config.env = std::move(env); return *this; }
81 ProcessFactory & setCwd(fs::path p) noexcept { _config.cwd = std::move(p); return *this; }
85 ProcessFactory & setEnvMode(Process::EnvMode mode) noexcept { _config.envMode = mode; return *this; }
89 ProcessFactory & setStdinMode(Process::StreamMode mode) noexcept { _config.stdinMode = mode; return *this; }
93 ProcessFactory & setStdoutMode(Process::StreamMode mode) noexcept { _config.stdoutMode = mode; return *this; }
97 ProcessFactory & setStderrMode(Process::StreamMode mode) noexcept { _config.stderrMode = mode; return *this; }
101 ProcessFactory & setStdoutCaptureConfig(Process::CaptureConfig conf) { _config.stdoutCaptureConfig = std::move(conf); return *this; }
105 ProcessFactory & setStderrCaptureConfig(Process::CaptureConfig conf) { _config.stderrCaptureConfig = std::move(conf); return *this; }
109 ProcessFactory & setUseParentDeathSignal(bool use) noexcept { _config.useParentDeathSignal = use; return *this; }
110
111private:
112 Process::Config _config;
113};
114} // !namespace dfx::Subprocess
Abstract interface for FD-based event polling.
Definition Poller.hpp:37
Small builder-style helper to assemble a Process::Config and then construct a Process.
Definition ProcessFactory.hpp:39
ProcessFactory & setEnv(std::vector< std::string > env) noexcept
Set the environment vector.
Definition ProcessFactory.hpp:77
ProcessFactory & setStdoutMode(Process::StreamMode mode) noexcept
Set how stdout is connected for the child.
Definition ProcessFactory.hpp:93
ProcessFactory & setStdoutCaptureConfig(Process::CaptureConfig conf)
Set capture configuration for stdout.
Definition ProcessFactory.hpp:101
ProcessFactory & setArgs(std::vector< std::string > args) noexcept
Set the argument vector.
Definition ProcessFactory.hpp:73
ProcessFactory & setStdinMode(Process::StreamMode mode) noexcept
Set how stdin is connected for the child.
Definition ProcessFactory.hpp:89
Process::Config buildConfig()
Extract the current Process::Config.
Definition ProcessFactory.hpp:63
ProcessFactory & setStderrMode(Process::StreamMode mode) noexcept
Set how stderr is connected for the child.
Definition ProcessFactory.hpp:97
ProcessFactory & setEnvMode(Process::EnvMode mode) noexcept
Set the environment mode.
Definition ProcessFactory.hpp:85
ProcessFactory & setCwd(fs::path p) noexcept
Set the working directory.
Definition ProcessFactory.hpp:81
ProcessFactory & setUseParentDeathSignal(bool use) noexcept
Enable/disable the parent-death signal behavior.
Definition ProcessFactory.hpp:109
ProcessFactory & setBin(fs::path p) noexcept
Set the program path/name to execute.
Definition ProcessFactory.hpp:69
ProcessFactory & setStderrCaptureConfig(Process::CaptureConfig conf)
Set capture configuration for stderr.
Definition ProcessFactory.hpp:105
Process build(FdWatch::Poller &poller)
Build a Process using the current configuration and bind it to a poller.
Definition ProcessFactory.hpp:52
Subprocess wrapper with optional stdio piping/capture and event-driven callbacks.
Definition Process.hpp:59
StreamMode
How a standard stream of the child is wired.
Definition Process.hpp:65
EnvMode
How the provided environment list in Config is applied.
Definition Process.hpp:95
Definition SocketClient.hpp:23
Definition Process.hpp:34
Configuration for captured output buffering.
Definition Process.hpp:111
Process spawn and I/O configuration.
Definition Process.hpp:123