LLDB mainline
lldb_private::IOHandlerProcessSTDIOWindows Class Reference
Inheritance diagram for lldb_private::IOHandlerProcessSTDIOWindows:
[legend]

Public Member Functions

 IOHandlerProcessSTDIOWindows (Process *process, HANDLE conpty_input)
 ~IOHandlerProcessSTDIOWindows () override
void SetIsRunning (bool running)
llvm::Expected< boolConsoleHasTextInput (const HANDLE hStdin)
 Peek the console for input.
void Run () override
void Cancel () override
bool Interrupt () override
void GotEOF () override
Public Member Functions inherited from lldb_private::IOHandler
 IOHandler (Debugger &debugger, IOHandler::Type type)
 IOHandler (Debugger &debugger, IOHandler::Type type, const lldb::FileSP &input_sp, const lldb::LockableStreamFileSP &output_sp, const lldb::LockableStreamFileSP &error_sp, uint32_t flags)
virtual ~IOHandler ()
bool IsActive ()
void SetIsDone (bool b)
bool GetIsDone ()
Type GetType () const
virtual void Activate ()
virtual void Deactivate ()
virtual void TerminalSizeChanged ()
virtual void Refresh ()
virtual const char * GetPrompt ()
virtual bool SetPrompt (llvm::StringRef prompt)
virtual bool SetUseColor (bool use_color)
bool SetPrompt (const char *)=delete
virtual llvm::StringRef GetControlSequence (char ch)
virtual const char * GetCommandPrefix ()
virtual const char * GetHelpPrologue ()
int GetInputFD ()
int GetOutputFD ()
int GetErrorFD ()
lldb::FileSP GetInputFileSP ()
lldb::LockableStreamFileSP GetOutputStreamFileSP ()
lldb::LockableStreamFileSP GetErrorStreamFileSP ()
DebuggerGetDebugger ()
void * GetUserData ()
void SetUserData (void *user_data)
FlagsGetFlags ()
const FlagsGetFlags () const
bool GetIsInteractive ()
 Check if the input is being supplied interactively by a user.
bool GetIsRealTerminal ()
 Check if the input is coming from a real terminal.
void SetPopped (bool b)
void WaitForPop ()
virtual void PrintAsync (const char *s, size_t len, bool is_stdout)

Private Types

enum  ControlOp : char { eControlOpQuit = 'q' , eControlOpInterrupt = 'i' , eControlOpNone = 0 }

Private Attributes

Processm_process
NativeFile m_read_file
 Read from this file (usually actual STDIN for LLDB)
HANDLE m_write_file = INVALID_HANDLE_VALUE
 Write to this file (usually the primary pty for getting io to debuggee)
HANDLE m_interrupt_event = INVALID_HANDLE_VALUE
std::atomic< ControlOpm_pending_op {eControlOpNone}
std::mutex m_mutex
bool m_is_running = false

Additional Inherited Members

Public Types inherited from lldb_private::IOHandler
enum class  Type {
  CommandInterpreter , CommandList , Confirm , Curses ,
  Expression , REPL , ProcessIO , PythonInterpreter ,
  LuaInterpreter , PythonCode , Other
}
Protected Attributes inherited from lldb_private::IOHandler
Debuggerm_debugger
lldb::FileSP m_input_sp
lldb::LockableStreamFileSP m_output_sp
lldb::LockableStreamFileSP m_error_sp
Predicate< boolm_popped
Flags m_flags
Type m_type
void * m_user_data
bool m_done
bool m_active

Detailed Description

Definition at line 957 of file ProcessWindows.cpp.

Member Enumeration Documentation

◆ ControlOp

Enumerator
eControlOpQuit 
eControlOpInterrupt 
eControlOpNone 

Definition at line 1119 of file ProcessWindows.cpp.

Constructor & Destructor Documentation

◆ IOHandlerProcessSTDIOWindows()

lldb_private::IOHandlerProcessSTDIOWindows::IOHandlerProcessSTDIOWindows ( Process * process,
HANDLE conpty_input )
inline

◆ ~IOHandlerProcessSTDIOWindows()

lldb_private::IOHandlerProcessSTDIOWindows::~IOHandlerProcessSTDIOWindows ( )
inlineoverride

Definition at line 969 of file ProcessWindows.cpp.

References m_interrupt_event.

Member Function Documentation

◆ Cancel()

void lldb_private::IOHandlerProcessSTDIOWindows::Cancel ( )
inlineoverridevirtual

◆ ConsoleHasTextInput()

llvm::Expected< bool > lldb_private::IOHandlerProcessSTDIOWindows::ConsoleHasTextInput ( const HANDLE hStdin)
inline

Peek the console for input.

If it has any, drain the pipe until text input is found or the pipe is empty.

Parameters
hStdinThe handle to the standard input's pipe.
Returns
true if the pipe has text input.

Definition at line 988 of file ProcessWindows.cpp.

Referenced by Run().

◆ GotEOF()

void lldb_private::IOHandlerProcessSTDIOWindows::GotEOF ( )
inlineoverridevirtual

Implements lldb_private::IOHandler.

Definition at line 1116 of file ProcessWindows.cpp.

◆ Interrupt()

bool lldb_private::IOHandlerProcessSTDIOWindows::Interrupt ( )
inlineoverridevirtual

◆ Run()

◆ SetIsRunning()

void lldb_private::IOHandlerProcessSTDIOWindows::SetIsRunning ( bool running)
inline

Definition at line 974 of file ProcessWindows.cpp.

References m_is_running, m_mutex, and lldb_private::IOHandler::SetIsDone().

Referenced by Run().

Member Data Documentation

◆ m_interrupt_event

HANDLE lldb_private::IOHandlerProcessSTDIOWindows::m_interrupt_event = INVALID_HANDLE_VALUE
private

◆ m_is_running

bool lldb_private::IOHandlerProcessSTDIOWindows::m_is_running = false
private

Definition at line 1133 of file ProcessWindows.cpp.

Referenced by Cancel(), and SetIsRunning().

◆ m_mutex

std::mutex lldb_private::IOHandlerProcessSTDIOWindows::m_mutex
private

Definition at line 1132 of file ProcessWindows.cpp.

Referenced by Cancel(), Run(), and SetIsRunning().

◆ m_pending_op

std::atomic<ControlOp> lldb_private::IOHandlerProcessSTDIOWindows::m_pending_op {eControlOpNone}
private

Definition at line 1131 of file ProcessWindows.cpp.

Referenced by Cancel(), Interrupt(), and Run().

◆ m_process

Process* lldb_private::IOHandlerProcessSTDIOWindows::m_process
private

Definition at line 1125 of file ProcessWindows.cpp.

Referenced by Interrupt(), IOHandlerProcessSTDIOWindows(), and Run().

◆ m_read_file

NativeFile lldb_private::IOHandlerProcessSTDIOWindows::m_read_file
private

Read from this file (usually actual STDIN for LLDB)

Definition at line 1127 of file ProcessWindows.cpp.

Referenced by IOHandlerProcessSTDIOWindows(), and Run().

◆ m_write_file

HANDLE lldb_private::IOHandlerProcessSTDIOWindows::m_write_file = INVALID_HANDLE_VALUE
private

Write to this file (usually the primary pty for getting io to debuggee)

Definition at line 1129 of file ProcessWindows.cpp.

Referenced by IOHandlerProcessSTDIOWindows(), and Run().


The documentation for this class was generated from the following file: