blocxx
BLOCXX_NAMESPACE::SocketBaseImpl Class Referenceabstract

#include <SocketBaseImpl.hpp>

Inheritance diagram for BLOCXX_NAMESPACE::SocketBaseImpl:
BLOCXX_NAMESPACE::SelectableIFC BLOCXX_NAMESPACE::IOIFC BLOCXX_NAMESPACE::IntrusiveCountableBase BLOCXX_NAMESPACE::SSLSocketImpl BLOCXX_NAMESPACE::SocketImpl

Public Member Functions

 SocketBaseImpl ()
 
 SocketBaseImpl (SocketHandle_t fd, SocketAddress::AddressType addrType)
 
 SocketBaseImpl (const SocketAddress &addr)
 
virtual ~SocketBaseImpl ()
 
virtual void connect (const SocketAddress &addr)
 
virtual void disconnect ()
 
void setReceiveTimeout (const Timeout &timeout)
 
Timeout getReceiveTimeout () const
 
void setSendTimeout (const Timeout &timeout)
 
Timeout getSendTimeout () const
 
void setConnectTimeout (const Timeout &timeout)
 
Timeout getConnectTimeout () const
 
void setTimeouts (const Timeout &timeout)
 
bool receiveTimeOutExpired () const
 
int write (const void *dataOut, int dataOutLen, ErrorAction errorAsException=E_RETURN_ON_ERROR)
 Write a specified number of bytes to the device that is exposing the IOIFC interface.
 
int read (void *dataIn, int dataInLen, ErrorAction errorAsException=E_RETURN_ON_ERROR)
 Read a specified number of bytes from the device that is exposing the IOIFC interface.
 
virtual bool waitForInput (const Timeout &timeout)
 
bool waitForOutput (const Timeout &timeout)
 
std::istream & getInputStream ()
 
std::ostream & getOutputStream ()
 
std::iostream & getIOStream ()
 
SocketAddress getLocalAddress () const
 
SocketAddress getPeerAddress () const
 
SocketHandle_t getfd () const
 
Select_t getSelectObj () const
 
bool isConnected () const
 
- Public Member Functions inherited from BLOCXX_NAMESPACE::SelectableIFC
virtual ~SelectableIFC ()
 
- Public Member Functions inherited from BLOCXX_NAMESPACE::IOIFC
virtual ~IOIFC ()
 

Static Public Member Functions

static void setDumpFiles (const String &in, const String &out)
 

Protected Member Functions

virtual int readAux (void *dataIn, int dataInLen)=0
 
virtual int writeAux (const void *dataOut, int dataOutLen)=0
 
- Protected Member Functions inherited from BLOCXX_NAMESPACE::IntrusiveCountableBase
 IntrusiveCountableBase ()
 
 IntrusiveCountableBase (const IntrusiveCountableBase &)
 
IntrusiveCountableBaseoperator= (const IntrusiveCountableBase &)
 
virtual ~IntrusiveCountableBase ()
 

Protected Attributes

bool m_isConnected
 
SocketHandle_t m_sockfd
 
SocketAddress m_localAddress
 
SocketAddress m_peerAddress
 

Private Member Functions

void fillInetAddrParms ()
 
void fillUnixAddrParms ()
 
 SocketBaseImpl (const SocketBaseImpl &arg)
 
SocketBaseImploperator= (const SocketBaseImpl &arg)
 

Private Attributes

bool m_recvTimeoutExprd
 
SocketStreamBuffer m_streamBuf
 
std::istream m_in
 
std::ostream m_out
 
std::iostream m_inout
 
Timeout m_recvTimeout
 
Timeout m_sendTimeout
 
Timeout m_connectTimeout
 

Static Private Attributes

static String m_traceFileOut
 
static String m_traceFileIn
 

Additional Inherited Members

- Public Types inherited from BLOCXX_NAMESPACE::IOIFC
enum  ErrorAction { E_THROW_ON_ERROR , E_RETURN_ON_ERROR }
 

Detailed Description

Definition at line 68 of file SocketBaseImpl.hpp.

Constructor & Destructor Documentation

◆ SocketBaseImpl() [1/4]

◆ SocketBaseImpl() [2/4]

◆ SocketBaseImpl() [3/4]

BLOCXX_NAMESPACE::SocketBaseImpl::SocketBaseImpl ( const SocketAddress & addr)

◆ ~SocketBaseImpl()

BLOCXX_NAMESPACE::SocketBaseImpl::~SocketBaseImpl ( )
virtual

Definition at line 171 of file SocketBaseImpl.cpp.

References disconnect().

◆ SocketBaseImpl() [4/4]

BLOCXX_NAMESPACE::SocketBaseImpl::SocketBaseImpl ( const SocketBaseImpl & arg)
private

References SocketBaseImpl().

Member Function Documentation

◆ connect()

void BLOCXX_NAMESPACE::SocketBaseImpl::connect ( const SocketAddress & addr)
virtual

Reimplemented in BLOCXX_NAMESPACE::SSLSocketImpl.

Definition at line 190 of file SocketBaseImpl.cpp.

References BLOCXX_NAMESPACE::TimeoutTimer::asRelativeTimeout(), BLOCXX_ASSERT, BLOCXX_THROW, BLOCXX_THROW_ERRNO_MSG, BLOCXX_NAMESPACE::Format::c_str(), BLOCXX_NAMESPACE::String::c_str(), BLOCXX_NAMESPACE::IntrusiveReference< T >::cast_to(), connect(), disconnect(), BLOCXX_NAMESPACE::TimeoutTimer::expired(), fillInetAddrParms(), fillUnixAddrParms(), BLOCXX_NAMESPACE::AutoResource< Policy >::get(), getfd(), BLOCXX_NAMESPACE::SocketAddress::getInetAddress(), BLOCXX_NAMESPACE::PosixUnnamedPipe::getInputHandle(), BLOCXX_NAMESPACE::DateTime::getMicrosecond(), BLOCXX_NAMESPACE::SocketAddress::getNativeForm(), BLOCXX_NAMESPACE::SocketAddress::getNativeFormSize(), BLOCXX_NAMESPACE::Socket::getShutDownMechanism(), BLOCXX_NAMESPACE::SocketAddress::getType(), BLOCXX_NAMESPACE::SocketAddress::INET, BLOCXX_NAMESPACE::TimeoutTimer::loop(), m_connectTimeout, m_in, m_inout, m_isConnected, m_out, m_peerAddress, m_sockfd, m_streamBuf, m_traceFileOut, BLOCXX_NAMESPACE::Array< T >::push_back(), BLOCXX_NAMESPACE::AutoResource< Policy >::release(), BLOCXX_NAMESPACE::Select::SELECT_ERROR, BLOCXX_NAMESPACE::Select::SELECT_TIMEOUT, BLOCXX_NAMESPACE::Select::selectRW(), BLOCXX_NAMESPACE::DateTime::setToCurrent(), BLOCXX_NAMESPACE::Array< T >::size(), BLOCXX_NAMESPACE::TimeoutTimer::start(), BLOCXX_NAMESPACE::Thread::testCancel(), BLOCXX_NAMESPACE::DateTime::toString(), BLOCXX_NAMESPACE::SocketAddress::toString(), BLOCXX_NAMESPACE::SocketAddress::UDS, BLOCXX_NAMESPACE::Select::SelectObject::waitForRead, and BLOCXX_NAMESPACE::Select::SelectObject::waitForWrite.

Referenced by connect(), and SocketBaseImpl().

◆ disconnect()

◆ fillInetAddrParms()

void BLOCXX_NAMESPACE::SocketBaseImpl::fillInetAddrParms ( )
private

Definition at line 401 of file SocketBaseImpl.cpp.

References m_localAddress, m_peerAddress, and m_sockfd.

Referenced by connect(), and SocketBaseImpl().

◆ fillUnixAddrParms()

void BLOCXX_NAMESPACE::SocketBaseImpl::fillUnixAddrParms ( )
private

Definition at line 423 of file SocketBaseImpl.cpp.

References BLOCXX_THROW_ERRNO_MSG, m_localAddress, m_peerAddress, and m_sockfd.

Referenced by connect(), and SocketBaseImpl().

◆ getConnectTimeout()

Timeout BLOCXX_NAMESPACE::SocketBaseImpl::getConnectTimeout ( ) const
inline

Definition at line 82 of file SocketBaseImpl.hpp.

References m_connectTimeout.

◆ getfd()

SocketHandle_t BLOCXX_NAMESPACE::SocketBaseImpl::getfd ( ) const
inline

Definition at line 96 of file SocketBaseImpl.hpp.

References m_sockfd.

Referenced by connect(), disconnect(), read(), and write().

◆ getInputStream()

istream & BLOCXX_NAMESPACE::SocketBaseImpl::getInputStream ( )

Definition at line 574 of file SocketBaseImpl.cpp.

References m_in.

◆ getIOStream()

iostream & BLOCXX_NAMESPACE::SocketBaseImpl::getIOStream ( )

Definition at line 586 of file SocketBaseImpl.cpp.

References m_inout.

◆ getLocalAddress()

SocketAddress BLOCXX_NAMESPACE::SocketBaseImpl::getLocalAddress ( ) const
inline

Definition at line 94 of file SocketBaseImpl.hpp.

References m_localAddress.

◆ getOutputStream()

ostream & BLOCXX_NAMESPACE::SocketBaseImpl::getOutputStream ( )

Definition at line 580 of file SocketBaseImpl.cpp.

References m_out.

◆ getPeerAddress()

SocketAddress BLOCXX_NAMESPACE::SocketBaseImpl::getPeerAddress ( ) const
inline

Definition at line 95 of file SocketBaseImpl.hpp.

References m_peerAddress.

◆ getReceiveTimeout()

Timeout BLOCXX_NAMESPACE::SocketBaseImpl::getReceiveTimeout ( ) const
inline

Definition at line 78 of file SocketBaseImpl.hpp.

References m_recvTimeout.

◆ getSelectObj()

Select_t BLOCXX_NAMESPACE::SocketBaseImpl::getSelectObj ( ) const
virtual

Implements BLOCXX_NAMESPACE::SelectableIFC.

Reimplemented in BLOCXX_NAMESPACE::SocketImpl, and BLOCXX_NAMESPACE::SSLSocketImpl.

Definition at line 184 of file SocketBaseImpl.cpp.

References m_sockfd.

◆ getSendTimeout()

Timeout BLOCXX_NAMESPACE::SocketBaseImpl::getSendTimeout ( ) const
inline

Definition at line 80 of file SocketBaseImpl.hpp.

References m_sendTimeout.

◆ isConnected()

bool BLOCXX_NAMESPACE::SocketBaseImpl::isConnected ( ) const
inline

Definition at line 98 of file SocketBaseImpl.hpp.

References m_isConnected.

◆ operator=()

SocketBaseImpl & BLOCXX_NAMESPACE::SocketBaseImpl::operator= ( const SocketBaseImpl & arg)
private

References SocketBaseImpl().

◆ read()

int BLOCXX_NAMESPACE::SocketBaseImpl::read ( void * dataIn,
int dataInLen,
ErrorAction errorAsException = E_RETURN_ON_ERROR )
virtual

Read a specified number of bytes from the device that is exposing the IOIFC interface.

Parameters
dataInA pointer to a location in memory to put the bytes that have been read.
dataInLenThe number of bytes being requested from the device.
errorAsExceptionIf true and an error occurs durring the read operation, then throw an exception.
Exceptions
Anexception will be thrown upon an error condition if errorAsException is true.
Returns
The number of bytes actually read from the device, or -1 on error. If the device is set to nonblocking and no input is available, -1 will be returned and errno will be set to ETIMEDOUT

Implements BLOCXX_NAMESPACE::IOIFC.

Definition at line 494 of file SocketBaseImpl.cpp.

References BLOCXX_THROW_ERRNO_MSG, BLOCXX_NAMESPACE::String::c_str(), BLOCXX_NAMESPACE::IOIFC::E_THROW_ON_ERROR, getfd(), BLOCXX_NAMESPACE::DateTime::getMicrosecond(), m_isConnected, m_recvTimeout, m_traceFileIn, m_traceFileOut, readAux(), BLOCXX_NAMESPACE::DateTime::setToCurrent(), BLOCXX_NAMESPACE::DateTime::toString(), and waitForInput().

◆ readAux()

virtual int BLOCXX_NAMESPACE::SocketBaseImpl::readAux ( void * dataIn,
int dataInLen )
protectedpure virtual

◆ receiveTimeOutExpired()

bool BLOCXX_NAMESPACE::SocketBaseImpl::receiveTimeOutExpired ( ) const
inline

Definition at line 84 of file SocketBaseImpl.hpp.

References m_recvTimeoutExprd.

◆ setConnectTimeout()

void BLOCXX_NAMESPACE::SocketBaseImpl::setConnectTimeout ( const Timeout & timeout)
inline

Definition at line 81 of file SocketBaseImpl.hpp.

References m_connectTimeout.

◆ setDumpFiles()

void BLOCXX_NAMESPACE::SocketBaseImpl::setDumpFiles ( const String & in,
const String & out )
static

Definition at line 593 of file SocketBaseImpl.cpp.

References m_traceFileIn, and m_traceFileOut.

◆ setReceiveTimeout()

void BLOCXX_NAMESPACE::SocketBaseImpl::setReceiveTimeout ( const Timeout & timeout)
inline

Definition at line 77 of file SocketBaseImpl.hpp.

References m_recvTimeout.

◆ setSendTimeout()

void BLOCXX_NAMESPACE::SocketBaseImpl::setSendTimeout ( const Timeout & timeout)
inline

Definition at line 79 of file SocketBaseImpl.hpp.

References m_sendTimeout.

◆ setTimeouts()

void BLOCXX_NAMESPACE::SocketBaseImpl::setTimeouts ( const Timeout & timeout)
inline

Definition at line 83 of file SocketBaseImpl.hpp.

References m_connectTimeout, m_recvTimeout, and m_sendTimeout.

◆ waitForInput()

bool BLOCXX_NAMESPACE::SocketBaseImpl::waitForInput ( const Timeout & timeout)
virtual

◆ waitForOutput()

bool BLOCXX_NAMESPACE::SocketBaseImpl::waitForOutput ( const Timeout & timeout)

◆ write()

int BLOCXX_NAMESPACE::SocketBaseImpl::write ( const void * dataOut,
int dataOutLen,
ErrorAction errorAsException = E_RETURN_ON_ERROR )
virtual

Write a specified number of bytes to the device that is exposing the IOIFC interface.

Parameters
dataOutA pointer to a location in memory that contains the bytes that will be written to the device.
dataOutLenThe length of the data pointed to by the dataOut param.
errorAsExceptionIf true and an error occurs durring the write operation, then throw an exception.
Exceptions
Anexception will be thrown upon an error condition if errorAsException is true.
Returns
The number of bytes actually written to the device. or -1 on error. If the device is set to nonblocking and the write would block, -1 will be returned and errno will be set to ETIMEDOUT.

Implements BLOCXX_NAMESPACE::IOIFC.

Definition at line 438 of file SocketBaseImpl.cpp.

References BLOCXX_THROW_ERRNO_MSG, BLOCXX_NAMESPACE::String::c_str(), BLOCXX_NAMESPACE::IOIFC::E_THROW_ON_ERROR, getfd(), BLOCXX_NAMESPACE::DateTime::getMicrosecond(), m_isConnected, m_sendTimeout, m_traceFileOut, BLOCXX_NAMESPACE::DateTime::setToCurrent(), BLOCXX_NAMESPACE::DateTime::toString(), waitForOutput(), and writeAux().

◆ writeAux()

virtual int BLOCXX_NAMESPACE::SocketBaseImpl::writeAux ( const void * dataOut,
int dataOutLen )
protectedpure virtual

Member Data Documentation

◆ m_connectTimeout

Timeout BLOCXX_NAMESPACE::SocketBaseImpl::m_connectTimeout
private

◆ m_in

std::istream BLOCXX_NAMESPACE::SocketBaseImpl::m_in
private

◆ m_inout

std::iostream BLOCXX_NAMESPACE::SocketBaseImpl::m_inout
private

◆ m_isConnected

bool BLOCXX_NAMESPACE::SocketBaseImpl::m_isConnected
protected

◆ m_localAddress

SocketAddress BLOCXX_NAMESPACE::SocketBaseImpl::m_localAddress
protected

◆ m_out

std::ostream BLOCXX_NAMESPACE::SocketBaseImpl::m_out
private

◆ m_peerAddress

SocketAddress BLOCXX_NAMESPACE::SocketBaseImpl::m_peerAddress
protected

◆ m_recvTimeout

Timeout BLOCXX_NAMESPACE::SocketBaseImpl::m_recvTimeout
private

◆ m_recvTimeoutExprd

bool BLOCXX_NAMESPACE::SocketBaseImpl::m_recvTimeoutExprd
private

◆ m_sendTimeout

Timeout BLOCXX_NAMESPACE::SocketBaseImpl::m_sendTimeout
private

◆ m_sockfd

◆ m_streamBuf

SocketStreamBuffer BLOCXX_NAMESPACE::SocketBaseImpl::m_streamBuf
private

Definition at line 124 of file SocketBaseImpl.hpp.

Referenced by connect(), SocketBaseImpl(), SocketBaseImpl(), and SocketBaseImpl().

◆ m_traceFileIn

String BLOCXX_NAMESPACE::SocketBaseImpl::m_traceFileIn
staticprivate

Definition at line 133 of file SocketBaseImpl.hpp.

Referenced by read(), and setDumpFiles().

◆ m_traceFileOut

String BLOCXX_NAMESPACE::SocketBaseImpl::m_traceFileOut
staticprivate

Definition at line 132 of file SocketBaseImpl.hpp.

Referenced by connect(), disconnect(), read(), setDumpFiles(), and write().


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