LLDB mainline
lldb_private::MainLoopBase Class Referenceabstract

#include <MainLoopBase.h>

Inheritance diagram for lldb_private::MainLoopBase:
[legend]

Classes

class  ReadHandle

Public Types

using TimePoint
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

Initial value:
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

◆ ~MainLoopBase()

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

◆ MainLoopBase() [2/2]

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

References MainLoopBase().

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

Definition at line 60 of file MainLoopBase.h.

References AddCallback().

◆ 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

References MainLoopBase().

◆ 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: