LLDB mainline
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
lldb_private::MainLoopBase Class Referenceabstract

#include <MainLoopBase.h>

Inheritance diagram for lldb_private::MainLoopBase:
Inheritance graph
[legend]

Classes

class  ReadHandle
 

Public Types

using TimePoint = std::chrono::time_point< std::chrono::steady_clock, std::chrono::nanoseconds >
 
typedef std::unique_ptr< ReadHandleReadHandleUP
 
typedef std::function< void(MainLoopBase &)> Callback
 

Public Member Functions

 MainLoopBase ()
 
virtual ~MainLoopBase ()=default
 
virtual ReadHandleUP RegisterReadObject (const lldb::IOObjectSP &object_sp, const Callback &callback, Status &error)=0
 
void AddPendingCallback (const Callback &callback)
 
void AddCallback (const Callback &callback, std::chrono::nanoseconds delay)
 
void AddCallback (const Callback &callback, TimePoint point)
 
virtual Status Run ()
 
virtual void RequestTermination ()
 

Protected Member Functions

ReadHandleUP CreateReadHandle (const lldb::IOObjectSP &object_sp)
 
virtual void UnregisterReadObject (IOObject::WaitableHandle handle)=0
 
virtual void Interrupt ()=0
 
void ProcessCallbacks ()
 
std::optional< TimePointGetNextWakeupTime ()
 

Protected Attributes

std::mutex m_callback_mutex
 
std::priority_queue< std::pair< TimePoint, Callback >, std::vector< std::pair< TimePoint, Callback > >, llvm::on_first< std::greater< TimePoint > > > m_callbacks
 
bool m_terminate_request: 1
 

Private Member Functions

 MainLoopBase (const MainLoopBase &)=delete
 
const MainLoopBaseoperator= (const MainLoopBase &)=delete
 

Detailed Description

Definition at line 38 of file MainLoopBase.h.

Member Typedef Documentation

◆ Callback

typedef std::function<void(MainLoopBase &)> lldb_private::MainLoopBase::Callback

Definition at line 51 of file MainLoopBase.h.

◆ ReadHandleUP

Definition at line 49 of file MainLoopBase.h.

◆ TimePoint

using lldb_private::MainLoopBase::TimePoint = std::chrono::time_point<std::chrono::steady_clock, std::chrono::nanoseconds>

Definition at line 43 of file MainLoopBase.h.

Constructor & Destructor Documentation

◆ MainLoopBase() [1/2]

lldb_private::MainLoopBase::MainLoopBase ( )
inline

Definition at line 46 of file MainLoopBase.h.

◆ ~MainLoopBase()

virtual lldb_private::MainLoopBase::~MainLoopBase ( )
virtualdefault

◆ MainLoopBase() [2/2]

lldb_private::MainLoopBase::MainLoopBase ( const MainLoopBase )
privatedelete

Member Function Documentation

◆ AddCallback() [1/2]

void lldb_private::MainLoopBase::AddCallback ( const Callback callback,
std::chrono::nanoseconds  delay 
)
inline

Definition at line 66 of file MainLoopBase.h.

References AddCallback().

Referenced by lldb_private::Socket::Accept(), AddCallback(), and AddPendingCallback().

◆ AddCallback() [2/2]

void MainLoopBase::AddCallback ( const Callback callback,
TimePoint  point 
)

Definition at line 15 of file MainLoopBase.cpp.

References Interrupt(), m_callback_mutex, and m_callbacks.

◆ AddPendingCallback()

void lldb_private::MainLoopBase::AddPendingCallback ( const Callback callback)
inline

◆ CreateReadHandle()

ReadHandleUP lldb_private::MainLoopBase::CreateReadHandle ( const lldb::IOObjectSP object_sp)
inlineprotected

◆ GetNextWakeupTime()

std::optional< MainLoopBase::TimePoint > MainLoopBase::GetNextWakeupTime ( )
protected

Definition at line 44 of file MainLoopBase.cpp.

References m_callback_mutex, and m_callbacks.

Referenced by lldb_private::MainLoopWindows::Poll().

◆ Interrupt()

virtual void lldb_private::MainLoopBase::Interrupt ( )
protectedpure virtual

◆ operator=()

const MainLoopBase & lldb_private::MainLoopBase::operator= ( const MainLoopBase )
privatedelete

◆ ProcessCallbacks()

void MainLoopBase::ProcessCallbacks ( )
protected

◆ RegisterReadObject()

virtual ReadHandleUP lldb_private::MainLoopBase::RegisterReadObject ( const lldb::IOObjectSP object_sp,
const Callback callback,
Status error 
)
pure virtual

◆ RequestTermination()

virtual void lldb_private::MainLoopBase::RequestTermination ( )
inlinevirtual

◆ Run()

virtual Status lldb_private::MainLoopBase::Run ( )
inlinevirtual

Reimplemented in lldb_private::MainLoopPosix, and lldb_private::MainLoopWindows.

Definition at line 75 of file MainLoopBase.h.

◆ UnregisterReadObject()

virtual void lldb_private::MainLoopBase::UnregisterReadObject ( IOObject::WaitableHandle  handle)
protectedpure virtual

Member Data Documentation

◆ m_callback_mutex

std::mutex lldb_private::MainLoopBase::m_callback_mutex
protected

Definition at line 95 of file MainLoopBase.h.

Referenced by AddCallback(), GetNextWakeupTime(), and ProcessCallbacks().

◆ m_callbacks

std::priority_queue<std::pair<TimePoint, Callback>, std::vector<std::pair<TimePoint, Callback> >, llvm::on_first<std::greater<TimePoint> > > lldb_private::MainLoopBase::m_callbacks
protected

Definition at line 99 of file MainLoopBase.h.

Referenced by AddCallback(), GetNextWakeupTime(), and ProcessCallbacks().

◆ m_terminate_request

bool lldb_private::MainLoopBase::m_terminate_request
protected

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