25 if (
m_pty->IsConnected())
40 std::unique_lock<std::mutex> guard(
m_pty->GetMutex());
41 if (
m_pty->IsStopping())
42 m_pty->GetCV().wait(guard, [
this] {
return !
m_pty->IsStopping(); });
43 if (!
m_pty->IsConnected()) {
49 char *out =
static_cast<char *
>(dst);
71 if (stdin_handle == INVALID_HANDLE_VALUE || stdin_handle ==
nullptr) {
78 if (!::WriteFile(stdin_handle, src,
static_cast<DWORD
>(src_len), &written,
80 DWORD err = ::GetLastError();
81 status = (err == ERROR_BROKEN_PIPE || err == ERROR_NO_DATA)
lldb::ConnectionStatus Disconnect(Status *error_ptr) override
Disconnect the communications connection if one is currently connected.
size_t Write(const void *src, size_t src_len, lldb::ConnectionStatus &status, Status *error_ptr) override
The actual write function that attempts to write to the communications protocol.
bool m_conpty_sequences_stripped
ConnectionConPTY(std::shared_ptr< PseudoConsole > pty)
size_t Read(void *dst, size_t dst_len, const Timeout< std::micro > &timeout, lldb::ConnectionStatus &status, Status *error_ptr) override
Read from the ConPTY's pipe.
std::shared_ptr< PseudoConsole > m_pty
lldb::ConnectionStatus Connect(llvm::StringRef s, Status *error_ptr) override
Connect using the connect string url.
size_t Read(void *dst, size_t dst_len, const Timeout< std::micro > &timeout, lldb::ConnectionStatus &status, Status *error_ptr) override
The read function that attempts to read from the connection.
static Status FromErrorString(const char *str)
A class that represents a running process on the host machine.
void StripConPTYSequences(void *data, size_t &len, bool strip_init)
Remove ConPTY management sequences from a buffer in-place.
ConnectionStatus
Connection Status Types.
@ eConnectionStatusError
Check GetError() for details.
@ eConnectionStatusEndOfFile
End-of-file encountered.
@ eConnectionStatusSuccess
Success.
@ eConnectionStatusNoConnection
No connection.
@ eErrorTypeWin32
Standard Win32 error codes.