LLDB mainline
lldb_private::PipePosix Class Reference

A posix-based implementation of Pipe, a class that abtracts unix style pipes. More...

#include "lldb/Host/posix/PipePosix.h"

Inheritance diagram for lldb_private::PipePosix:
[legend]

Public Member Functions

 PipePosix ()
 PipePosix (lldb::pipe_t read, lldb::pipe_t write)
 PipePosix (const PipePosix &)=delete
 PipePosix (PipePosix &&pipe_posix)
PipePosixoperator= (const PipePosix &)=delete
PipePosixoperator= (PipePosix &&pipe_posix)
 ~PipePosix () override
Status CreateNew () override
Status CreateNew (llvm::StringRef name) override
Status CreateWithUniqueName (llvm::StringRef prefix, llvm::SmallVectorImpl< char > &name) override
Status OpenAsReader (llvm::StringRef name) override
llvm::Error OpenAsWriter (llvm::StringRef name, const Timeout< std::micro > &timeout) override
bool CanRead () const override
bool CanWrite () const override
lldb::pipe_t GetReadPipe () const override
lldb::pipe_t GetWritePipe () const override
int GetReadFileDescriptor () const override
int GetWriteFileDescriptor () const override
int ReleaseReadFileDescriptor () override
int ReleaseWriteFileDescriptor () override
void CloseReadFileDescriptor () override
void CloseWriteFileDescriptor () override
void Close () override
Status Delete (llvm::StringRef name) override
llvm::Expected< size_t > Write (const void *buf, size_t size, const Timeout< std::micro > &timeout=std::nullopt) override
llvm::Expected< size_t > Read (void *buf, size_t size, const Timeout< std::micro > &timeout=std::nullopt) override
Public Member Functions inherited from lldb_private::PipeBase
virtual ~PipeBase ()

Static Public Attributes

static int kInvalidDescriptor = -1

Private Member Functions

bool CanReadUnlocked () const
bool CanWriteUnlocked () const
int GetReadFileDescriptorUnlocked () const
int GetWriteFileDescriptorUnlocked () const
int ReleaseReadFileDescriptorUnlocked ()
int ReleaseWriteFileDescriptorUnlocked ()
void CloseReadFileDescriptorUnlocked ()
void CloseWriteFileDescriptorUnlocked ()
void CloseUnlocked ()

Private Attributes

int m_fds [2]
std::mutex m_read_mutex
 Mutexes for m_fds;.
std::mutex m_write_mutex

Detailed Description

A posix-based implementation of Pipe, a class that abtracts unix style pipes.

A class that abstracts the LLDB core from host pipe functionality.

Definition at line 22 of file PipePosix.h.

Constructor & Destructor Documentation

◆ PipePosix() [1/4]

PipePosix::PipePosix ( )

Definition at line 58 of file PipePosix.cpp.

References kInvalidDescriptor, m_fds, and PipePosix().

Referenced by operator=(), operator=(), PipePosix(), PipePosix(), and PipePosix().

◆ PipePosix() [2/4]

PipePosix::PipePosix ( lldb::pipe_t read,
lldb::pipe_t write )

Definition at line 61 of file PipePosix.cpp.

References m_fds.

◆ PipePosix() [3/4]

lldb_private::PipePosix::PipePosix ( const PipePosix & )
delete

References PipePosix().

◆ PipePosix() [4/4]

PipePosix::PipePosix ( PipePosix && pipe_posix)

◆ ~PipePosix()

PipePosix::~PipePosix ( )
override

Definition at line 80 of file PipePosix.cpp.

References Close().

Member Function Documentation

◆ CanRead()

bool PipePosix::CanRead ( ) const
overridevirtual

◆ CanReadUnlocked()

bool PipePosix::CanReadUnlocked ( ) const
private

◆ CanWrite()

bool PipePosix::CanWrite ( ) const
overridevirtual

◆ CanWriteUnlocked()

bool PipePosix::CanWriteUnlocked ( ) const
private

◆ Close()

void PipePosix::Close ( )
overridevirtual

◆ CloseReadFileDescriptor()

void PipePosix::CloseReadFileDescriptor ( )
overridevirtual

◆ CloseReadFileDescriptorUnlocked()

void PipePosix::CloseReadFileDescriptorUnlocked ( )
private

Definition at line 279 of file PipePosix.cpp.

References CanReadUnlocked(), kInvalidDescriptor, m_fds, and READ.

Referenced by CloseReadFileDescriptor(), and CloseUnlocked().

◆ CloseUnlocked()

void PipePosix::CloseUnlocked ( )
private

Definition at line 248 of file PipePosix.cpp.

References CloseReadFileDescriptorUnlocked(), and CloseWriteFileDescriptorUnlocked().

Referenced by Close(), and CreateNew().

◆ CloseWriteFileDescriptor()

◆ CloseWriteFileDescriptorUnlocked()

void PipePosix::CloseWriteFileDescriptorUnlocked ( )
private

Definition at line 291 of file PipePosix.cpp.

References CanWriteUnlocked(), kInvalidDescriptor, m_fds, and WRITE.

Referenced by CloseUnlocked(), and CloseWriteFileDescriptor().

◆ CreateNew() [1/2]

◆ CreateNew() [2/2]

Status PipePosix::CreateNew ( llvm::StringRef name)
overridevirtual

◆ CreateWithUniqueName()

Status PipePosix::CreateWithUniqueName ( llvm::StringRef prefix,
llvm::SmallVectorImpl< char > & name )
overridevirtual

◆ Delete()

Status PipePosix::Delete ( llvm::StringRef name)
overridevirtual

◆ GetReadFileDescriptor()

int PipePosix::GetReadFileDescriptor ( ) const
overridevirtual

◆ GetReadFileDescriptorUnlocked()

int PipePosix::GetReadFileDescriptorUnlocked ( ) const
private

Definition at line 208 of file PipePosix.cpp.

References m_fds, and READ.

Referenced by GetReadFileDescriptor(), and Read().

◆ GetReadPipe()

lldb::pipe_t lldb_private::PipePosix::GetReadPipe ( ) const
inlineoverridevirtual

Implements lldb_private::PipeBase.

Definition at line 46 of file PipePosix.h.

References GetReadFileDescriptor().

◆ GetWriteFileDescriptor()

int PipePosix::GetWriteFileDescriptor ( ) const
overridevirtual

Implements lldb_private::PipeBase.

Definition at line 212 of file PipePosix.cpp.

References GetWriteFileDescriptorUnlocked(), and m_write_mutex.

Referenced by GetWritePipe().

◆ GetWriteFileDescriptorUnlocked()

int PipePosix::GetWriteFileDescriptorUnlocked ( ) const
private

Definition at line 217 of file PipePosix.cpp.

References m_fds, and WRITE.

Referenced by GetWriteFileDescriptor(), and Write().

◆ GetWritePipe()

lldb::pipe_t lldb_private::PipePosix::GetWritePipe ( ) const
inlineoverridevirtual

◆ OpenAsReader()

◆ OpenAsWriter()

llvm::Error PipePosix::OpenAsWriter ( llvm::StringRef name,
const Timeout< std::micro > & timeout )
overridevirtual

◆ operator=() [1/2]

PipePosix & lldb_private::PipePosix::operator= ( const PipePosix & )
delete

References PipePosix().

◆ operator=() [2/2]

PipePosix & PipePosix::operator= ( PipePosix && pipe_posix)

Definition at line 69 of file PipePosix.cpp.

References m_fds, m_read_mutex, m_write_mutex, PipePosix(), READ, and WRITE.

◆ Read()

◆ ReleaseReadFileDescriptor()

int PipePosix::ReleaseReadFileDescriptor ( )
overridevirtual

◆ ReleaseReadFileDescriptorUnlocked()

int PipePosix::ReleaseReadFileDescriptorUnlocked ( )
private

Definition at line 226 of file PipePosix.cpp.

References kInvalidDescriptor, m_fds, and READ.

Referenced by ReleaseReadFileDescriptor().

◆ ReleaseWriteFileDescriptor()

◆ ReleaseWriteFileDescriptorUnlocked()

int PipePosix::ReleaseWriteFileDescriptorUnlocked ( )
private

Definition at line 237 of file PipePosix.cpp.

References kInvalidDescriptor, m_fds, and WRITE.

Referenced by ReleaseWriteFileDescriptor().

◆ Write()

llvm::Expected< size_t > PipePosix::Write ( const void * buf,
size_t size,
const Timeout< std::micro > & timeout = std::nullopt )
overridevirtual

Member Data Documentation

◆ kInvalidDescriptor

◆ m_fds

◆ m_read_mutex

std::mutex lldb_private::PipePosix::m_read_mutex
mutableprivate

◆ m_write_mutex

std::mutex lldb_private::PipePosix::m_write_mutex
mutableprivate

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