Android-cuttlefish cvd tool
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
fdevent_context Struct Referenceabstract

#include <fdevent.h>

Public Member Functions

virtual ~fdevent_context ()=default
 
fdeventCreate (unique_fd fd, std::variant< fd_func, fd_func2 > func, void *arg)
 
unique_fd Destroy (fdevent *fde)
 
virtual void Set (fdevent *fde, unsigned events)=0
 
void Add (fdevent *fde, unsigned events)
 
void Del (fdevent *fde, unsigned events)
 
void SetTimeout (fdevent *fde, std::optional< std::chrono::milliseconds > timeout)
 
virtual void Loop ()=0
 
void CheckLooperThread () const
 
void CheckNotLooperThread () const
 
void Run (std::function< void()> fn)
 
void TerminateLoop ()
 
virtual size_t InstalledCount ()=0
 

Protected Member Functions

virtual void Register (fdevent *)=0
 
virtual void Unregister (fdevent *)=0
 
std::optional< std::chrono::milliseconds > CalculatePollDuration ()
 
void HandleEvents (const std::vector< fdevent_event > &events)
 
virtual void Interrupt ()=0
 

Protected Attributes

std::optional< uint64_t > looper_thread_id_ = std::nullopt
 
std::atomic< bool > terminate_loop_ = false
 
std::map< int, fdeventinstalled_fdevents_
 

Private Member Functions

void FlushRunQueue () EXCLUDES(run_queue_mutex_)
 
std::deque< std::function< void()> > run_queue_ GUARDED_BY (run_queue_mutex_)
 

Private Attributes

uint64_t fdevent_id_ = 0
 
std::mutex run_queue_mutex_
 
std::set< fdevent * > fdevent_set_
 

Constructor & Destructor Documentation

◆ ~fdevent_context()

virtual fdevent_context::~fdevent_context ( )
virtualdefault

Member Function Documentation

◆ Add()

void fdevent_context::Add ( fdevent fde,
unsigned  events 
)

◆ CalculatePollDuration()

std::optional< std::chrono::milliseconds > fdevent_context::CalculatePollDuration ( )
protected

◆ CheckLooperThread()

void fdevent_context::CheckLooperThread ( ) const

◆ CheckNotLooperThread()

void fdevent_context::CheckNotLooperThread ( ) const

◆ Create()

fdevent * fdevent_context::Create ( unique_fd  fd,
std::variant< fd_func, fd_func2 func,
void *  arg 
)

◆ Del()

void fdevent_context::Del ( fdevent fde,
unsigned  events 
)

◆ Destroy()

unique_fd fdevent_context::Destroy ( fdevent fde)

◆ FlushRunQueue()

void fdevent_context::FlushRunQueue ( )
private

◆ GUARDED_BY()

std::deque< std::function< void()> > run_queue_ fdevent_context::GUARDED_BY ( run_queue_mutex_  )
private

◆ HandleEvents()

void fdevent_context::HandleEvents ( const std::vector< fdevent_event > &  events)
protected

◆ InstalledCount()

virtual size_t fdevent_context::InstalledCount ( )
pure virtual

◆ Interrupt()

virtual void fdevent_context::Interrupt ( )
protectedpure virtual

◆ Loop()

virtual void fdevent_context::Loop ( )
pure virtual

◆ Register()

virtual void fdevent_context::Register ( fdevent )
protectedpure virtual

◆ Run()

void fdevent_context::Run ( std::function< void()>  fn)

◆ Set()

virtual void fdevent_context::Set ( fdevent fde,
unsigned  events 
)
pure virtual

◆ SetTimeout()

void fdevent_context::SetTimeout ( fdevent fde,
std::optional< std::chrono::milliseconds >  timeout 
)

◆ TerminateLoop()

void fdevent_context::TerminateLoop ( )

◆ Unregister()

virtual void fdevent_context::Unregister ( fdevent )
protectedpure virtual

Member Data Documentation

◆ fdevent_id_

uint64_t fdevent_context::fdevent_id_ = 0
private

◆ fdevent_set_

std::set<fdevent*> fdevent_context::fdevent_set_
private

◆ installed_fdevents_

std::map<int, fdevent> fdevent_context::installed_fdevents_
protected

◆ looper_thread_id_

std::optional<uint64_t> fdevent_context::looper_thread_id_ = std::nullopt
protected

◆ run_queue_mutex_

std::mutex fdevent_context::run_queue_mutex_
private

◆ terminate_loop_

std::atomic<bool> fdevent_context::terminate_loop_ = false
protected

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