17struct TerminalLaunchConfig
19 std::string mExecutable;
20 std::vector<std::string> mArgs;
21 std::string mWorkingDir;
22 std::vector<std::pair<std::string, std::string>> mEnv;
23 int mGracefulShutdownMs = 2000;
38 using OutputCallback = std::function<void(TerminalEntryKind kind, std::string text)>;
39 using ExitCallback = std::function<void(
int exitCode)>;
41 virtual ~ITerminalProcess() =
default;
44 virtual bool Start(
const TerminalLaunchConfig& cfg, std::string& outError) = 0;
47 virtual bool WriteStdin(
const char* data,
size_t len) = 0;
50 virtual void RequestStop() = 0;
53 virtual void ForceKill() = 0;
56 virtual bool IsRunning()
const = 0;
59 virtual int GetExitCode()
const = 0;
62 virtual void Join() = 0;
72 virtual bool IsTty()
const = 0;
74 void SetOutputCallback(OutputCallback cb) { mOnOutput = std::move(cb); }
75 void SetExitCallback(ExitCallback cb) { mOnExit = std::move(cb); }
78 OutputCallback mOnOutput;
83ITerminalProcess* CreateTerminalProcess();
92ITerminalProcess* CreateTerminalProcessConPTY();