Android-cuttlefish cvd tool
Public Types | Public Member Functions | Public Attributes | List of all members
NonblockingFdConnection Struct Reference
Inheritance diagram for NonblockingFdConnection:
Inheritance graph
[legend]
Collaboration diagram for NonblockingFdConnection:
Collaboration graph
[legend]

Public Types

enum class  WriteResult { Error , Completed , TryAgain }
 

Public Member Functions

 NonblockingFdConnection (unique_fd fd)
 
void SetRunning (bool value)
 
bool IsRunning ()
 
void Run (std::string *error)
 
bool Start () override final
 
void Stop () override final
 
bool DoTlsHandshake (RSA *key, std::string *auth_key) override final
 
void WakeThread ()
 
WriteResult DispatchWrites () REQUIRES(write_mutex_)
 
bool Write (std::unique_ptr< apacket > packet) final
 
bool running_ GUARDED_BY (run_mutex_)
 
bool writable_ GUARDED_BY (write_mutex_)
 
IOVector write_buffer_ GUARDED_BY (write_mutex_)
 
- Public Member Functions inherited from Connection
 Connection ()=default
 
virtual ~Connection ()=default
 
void SetTransport (atransport *transport)
 
virtual bool Write (std::unique_ptr< apacket > packet)=0
 
virtual bool Start ()=0
 
virtual void Stop ()=0
 
virtual bool DoTlsHandshake (RSA *key, std::string *auth_key=nullptr)=0
 
virtual void Reset ()
 
virtual bool SupportsDetach () const
 
virtual bool Attach (std::string *error)
 
virtual bool Detach (std::string *error)
 
std::string Serial () const
 
virtual uint64_t NegotiatedSpeedMbps ()
 
virtual uint64_t MaxSpeedMbps ()
 

Public Attributes

std::thread thread_
 
std::atomic< bool > started_
 
std::mutex run_mutex_
 
std::unique_ptr< amessageread_header_
 
IOVector read_buffer_
 
unique_fd fd_
 
unique_fd wake_fd_read_
 
unique_fd wake_fd_write_
 
std::mutex write_mutex_
 
IOVector incoming_queue_
 
- Public Attributes inherited from Connection
atransporttransport_ = nullptr
 

Additional Inherited Members

- Static Public Member Functions inherited from Connection
static std::unique_ptr< ConnectionFromFd (unique_fd fd)
 

Member Enumeration Documentation

◆ WriteResult

Enumerator
Error 
Completed 
TryAgain 

Constructor & Destructor Documentation

◆ NonblockingFdConnection()

NonblockingFdConnection::NonblockingFdConnection ( unique_fd  fd)
inline

Member Function Documentation

◆ DispatchWrites()

WriteResult NonblockingFdConnection::DispatchWrites ( )
inline

◆ DoTlsHandshake()

bool NonblockingFdConnection::DoTlsHandshake ( RSA *  key,
std::string *  auth_key 
)
inlinefinaloverridevirtual

Implements Connection.

◆ GUARDED_BY() [1/3]

bool running_ NonblockingFdConnection::GUARDED_BY ( run_mutex_  )

◆ GUARDED_BY() [2/3]

bool writable_ NonblockingFdConnection::GUARDED_BY ( write_mutex_  )

◆ GUARDED_BY() [3/3]

IOVector write_buffer_ NonblockingFdConnection::GUARDED_BY ( write_mutex_  )

◆ IsRunning()

bool NonblockingFdConnection::IsRunning ( )
inline

◆ Run()

void NonblockingFdConnection::Run ( std::string *  error)
inline

◆ SetRunning()

void NonblockingFdConnection::SetRunning ( bool  value)
inline

◆ Start()

bool NonblockingFdConnection::Start ( )
inlinefinaloverridevirtual

Implements Connection.

◆ Stop()

void NonblockingFdConnection::Stop ( )
inlinefinaloverridevirtual

Implements Connection.

◆ WakeThread()

void NonblockingFdConnection::WakeThread ( )
inline

◆ Write()

bool NonblockingFdConnection::Write ( std::unique_ptr< apacket packet)
inlinefinalvirtual

Implements Connection.

Member Data Documentation

◆ fd_

unique_fd NonblockingFdConnection::fd_

◆ incoming_queue_

IOVector NonblockingFdConnection::incoming_queue_

◆ read_buffer_

IOVector NonblockingFdConnection::read_buffer_

◆ read_header_

std::unique_ptr<amessage> NonblockingFdConnection::read_header_

◆ run_mutex_

std::mutex NonblockingFdConnection::run_mutex_

◆ started_

std::atomic<bool> NonblockingFdConnection::started_

◆ thread_

std::thread NonblockingFdConnection::thread_

◆ wake_fd_read_

unique_fd NonblockingFdConnection::wake_fd_read_

◆ wake_fd_write_

unique_fd NonblockingFdConnection::wake_fd_write_

◆ write_mutex_

std::mutex NonblockingFdConnection::write_mutex_

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