21enum class TerminalSessionState
30const char* TerminalSessionStateName(TerminalSessionState state);
61 bool SendCommand(
const std::string& line);
68 bool SendRaw(
const char* data,
size_t len);
73 TerminalSessionState GetState()
const {
return mState.load(); }
74 int GetLastExitCode()
const {
return mLastExitCode; }
75 const std::string& GetExecutableLabel()
const {
return mExecutableLabel; }
76 const std::string& GetLastError()
const {
return mLastError; }
77 TerminalOutputBuffer& GetBuffer() {
return mBuffer; }
80 bool IsTty()
const {
return mProcess && mProcess->IsTty(); }
83 void EmitSystem(
const std::string& msg);
84 void OnProcessOutput(TerminalEntryKind kind, std::string text);
85 void OnProcessExit(
int exitCode);
86 void RunStopSequence(
int timeoutMs);
87 void TransitionTo(TerminalSessionState newState);
89 std::unique_ptr<ITerminalProcess> mProcess;
90 TerminalOutputBuffer mBuffer;
92 std::atomic<TerminalSessionState> mState{ TerminalSessionState::Stopped };
93 std::atomic<bool> mPendingExit{
false };
94 std::atomic<bool> mWantsRestartAfterStop{
false };
96 std::string mLastError;
97 std::string mExecutableLabel;
98 int mLastExitCode = 0;
100 std::thread mStopThread;
101 std::mutex mStopThreadMutex;
void Tick()
Definition HttpClient.cpp:202