blocxx
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | Friends

BLOCXX_NAMESPACE::Socket Class Reference

#include <Socket.hpp>

Inheritance diagram for BLOCXX_NAMESPACE::Socket:
BLOCXX_NAMESPACE::SelectableIFC BLOCXX_NAMESPACE::IOIFC BLOCXX_NAMESPACE::IntrusiveCountableBase

List of all members.

Classes

struct  ShutDownMechanismFactory

Public Types

typedef UnnamedPipeRef ShutDownMechanism_t

Public Member Functions

 Socket ()
 Construct a non-SSL Socket.
 Socket (const SSLClientCtxRef &sslCtx)
 Construct a Socket.
 Socket (SocketFlags::ESSLFlag isSSL) BLOCXX_DEPRECATED
 Allocate a new Socket.
 Socket (SocketHandle_t fd, SocketAddress::AddressType addrType, SocketFlags::ESSLFlag isSSL=SocketFlags::E_NOT_SSL)
 TODO: Make a replacement for this function so it can be deprecated.
 Socket (const SocketAddress &addr, SocketFlags::ESSLFlag isSSL=SocketFlags::E_NOT_SSL)
 TODO: Make a replacement for this function so it can be deprecated.
void connect (const SocketAddress &addr)
 Connect to a peer node.
void disconnect ()
 Disconnect the (presumably) open connection.
BLOCXX_DEPRECATED void setReceiveTimeout (int seconds)
 Set the receive timeout on the socket.
void setReceiveTimeout (const Timeout &timeout)
 Set the receive timeout on the socket.
Timeout getReceiveTimeout () const
 Get the receive timeout.
BLOCXX_DEPRECATED void setSendTimeout (int seconds)
 Set the send timeout on the socket.
void setSendTimeout (const Timeout &timeout)
 Set the send timeout on the socket.
Timeout getSendTimeout () const
 Get the send timeout.
BLOCXX_DEPRECATED void setConnectTimeout (int seconds)
 Set the connect timeout on the socket.
void setConnectTimeout (const Timeout &timeout)
 Set the connect timeout on the socket.
Timeout getConnectTimeout () const
 Get the connect timeout.
BLOCXX_DEPRECATED void setTimeouts (int seconds)
 Set all timeouts (send, receive, connect)
void setTimeouts (const Timeout &timeout)
 Set all timeouts (send, receive, connect)
bool receiveTimeOutExpired () const
 Has the receive timeout expired?
int write (const void *dataOut, int dataOutLen, ErrorAction errorAsException=E_RETURN_ON_ERROR)
 Write some data to the socket.
int read (void *dataIn, int dataInLen, ErrorAction errorAsException=E_RETURN_ON_ERROR)
 Read from the socket.
BLOCXX_DEPRECATED bool waitForInput (int timeOutSecs)
 Wait for input on the socket for a specified length of time.
bool waitForInput (const Timeout &timeout=Timeout::infinite)
 Wait for input on the socket for a specified length of time.
BLOCXX_DEPRECATED bool waitForOutput (int timeOutSecs)
 Wait for output on the socket for a specified length of time.
bool waitForOutput (const Timeout &timeout=Timeout::infinite)
 Wait for output on the socket for a specified length of time.
SocketAddress getLocalAddress () const
 Get the local address associated with the socket connection.
SocketAddress getPeerAddress () const
 Get the peer address associated with the socket connection.
std::istream & getInputStream ()
 Get an istream to read from the socket.
std::ostream & getOutputStream ()
 Get an ostream to write to the socket.
BLOCXX_DEPRECATED std::iostream & getIOStream ()
 Get an iostream to read/write from/to the socket.
Select_t getSelectObj () const
SocketHandle_t getfd ()
 Get the socket handle for the socket.
bool isConnected () const
 Get connected state.
SSL * getSSL () const
 get the SSL structure associated with the socket (if it is an SSL socket)
bool peerCertVerified () const
 did the peer certificate pass verification?

Static Public Member Functions

static void createShutDownMechanism ()
static void shutdownAllSockets ()
 Call this to shutdown all sockets.
static bool gotShutDown () BLOCXX_DEPRECATED
 Have the sockets been shutdown?
static void deleteShutDownMechanism ()
static ShutDownMechanism_t getShutDownMechanism ()

Static Public Attributes

static const int INFINITE_TIMEOUT BLOCXX_DEPRECATED = -1

Private Member Functions

 Socket (SocketHandle_t fd, SocketAddress::AddressType addrType, const SSLServerCtxRef &sslCtx)
 Allocate a new Socket based on an existing handle.

Private Attributes

SocketBaseImplRef m_impl

Static Private Attributes

static LazyGlobal
< Socket::ShutDownMechanism_t,
int, ShutDownMechanismFactory
s_shutDownMechanism = BLOCXX_LAZY_GLOBAL_INIT(0)

Friends

class ServerSocketImpl

Detailed Description

Definition at line 65 of file Socket.hpp.


Member Typedef Documentation

Definition at line 293 of file Socket.hpp.


Constructor & Destructor Documentation

BLOCXX_NAMESPACE::Socket::Socket ( )

Construct a non-SSL Socket.

Definition at line 61 of file Socket.cpp.

usr src packages BUILD blocxx src blocxx Socket_needs_SSL cpp BLOCXX_NAMESPACE::Socket::Socket ( const SSLClientCtxRef sslCtx)

Construct a Socket.

Parameters:
sslCtxThe SSL client context. If null, the socket will not use SSL.

Definition at line 53 of file Socket_needs_SSL.cpp.

References BLOCXX_THROW, and m_impl.

BLOCXX_NAMESPACE::Socket::Socket ( SocketFlags::ESSLFlag  isSSL)

Allocate a new Socket.

Parameters:
isSSLis it an ssl socket?

Definition at line 70 of file Socket_needs_SSL.cpp.

References BLOCXX_THROW, BLOCXX_NAMESPACE::SocketFlags::E_SSL, and m_impl.

BLOCXX_NAMESPACE::Socket::Socket ( SocketHandle_t  fd,
SocketAddress::AddressType  addrType,
SocketFlags::ESSLFlag  isSSL = SocketFlags::E_NOT_SSL 
)

TODO: Make a replacement for this function so it can be deprecated.

Allocate a new Socket based on an existing handle. This is used by ServerSocket::accept()

Parameters:
fda handle to the existing socket
isSSLis it an SSL socket?

Definition at line 86 of file Socket_needs_SSL.cpp.

References BLOCXX_THROW, BLOCXX_NAMESPACE::SocketFlags::E_SSL, and m_impl.

BLOCXX_NAMESPACE::Socket::Socket ( const SocketAddress addr,
SocketFlags::ESSLFlag  isSSL = SocketFlags::E_NOT_SSL 
)

TODO: Make a replacement for this function so it can be deprecated.

Allocate a new Socket and connect it to a peer machine

Parameters:
addrthe address of the peer machine
addrTypethe address type of the socket is it an SSL socket?
Exceptions:
SocketException

Definition at line 121 of file Socket_needs_SSL.cpp.

References BLOCXX_THROW, BLOCXX_NAMESPACE::SocketFlags::E_SSL, and m_impl.

BLOCXX_NAMESPACE::Socket::Socket ( SocketHandle_t  fd,
SocketAddress::AddressType  addrType,
const SSLServerCtxRef sslCtx 
) [private]

Allocate a new Socket based on an existing handle.

This is used by ServerSocket::accept()

Parameters:
fda handle to the existing socket
addrTypethe address type of the socket
sslCtxa SSL server context reference

Definition at line 104 of file Socket_needs_SSL.cpp.

References BLOCXX_THROW, and m_impl.


Member Function Documentation

void BLOCXX_NAMESPACE::Socket::connect ( const SocketAddress addr) [inline]

Connect to a peer node.

Parameters:
addrThe address of the machine to connect to.
Exceptions:
SocketException

Definition at line 105 of file Socket.hpp.

References m_impl.

void BLOCXX_NAMESPACE::Socket::createShutDownMechanism ( ) [static]
void BLOCXX_NAMESPACE::Socket::deleteShutDownMechanism ( ) [static]
void BLOCXX_NAMESPACE::Socket::disconnect ( ) [inline]

Disconnect the (presumably) open connection.

Definition at line 110 of file Socket.hpp.

References m_impl.

Timeout BLOCXX_NAMESPACE::Socket::getConnectTimeout ( ) const [inline]

Get the connect timeout.

Returns:
The number of seconds of the connect timeout

Definition at line 157 of file Socket.hpp.

References m_impl.

SocketHandle_t BLOCXX_NAMESPACE::Socket::getfd ( ) [inline]

Get the socket handle for the socket.

Returns:
the socket handle

Definition at line 269 of file Socket.hpp.

References m_impl.

std::istream& BLOCXX_NAMESPACE::Socket::getInputStream ( ) [inline]

Get an istream to read from the socket.

Returns:
a istream& which can be used for socket input
Exceptions:
SocketException

Definition at line 245 of file Socket.hpp.

References m_impl.

BLOCXX_DEPRECATED std::iostream& BLOCXX_NAMESPACE::Socket::getIOStream ( ) [inline]

Get an iostream to read/write from/to the socket.

Returns:
an iostream& which can be used for socket input and output.
Exceptions:
SocketException

Definition at line 259 of file Socket.hpp.

References m_impl.

SocketAddress BLOCXX_NAMESPACE::Socket::getLocalAddress ( ) const [inline]

Get the local address associated with the socket connection.

Returns:
an SocketAddress representing the local machine

Definition at line 234 of file Socket.hpp.

References m_impl.

std::ostream& BLOCXX_NAMESPACE::Socket::getOutputStream ( ) [inline]

Get an ostream to write to the socket.

Returns:
an ostream& which can be used for socket output
Exceptions:
SocketException

Definition at line 252 of file Socket.hpp.

References m_impl.

SocketAddress BLOCXX_NAMESPACE::Socket::getPeerAddress ( ) const [inline]

Get the peer address associated with the socket connection.

Returns:
an SocketAddress representing the peer machine

Definition at line 239 of file Socket.hpp.

References m_impl.

Timeout BLOCXX_NAMESPACE::Socket::getReceiveTimeout ( ) const [inline]

Get the receive timeout.

Returns:
The number of seconds of the receive timeout

Definition at line 127 of file Socket.hpp.

References m_impl.

Select_t BLOCXX_NAMESPACE::Socket::getSelectObj ( ) const [inline, virtual]
Returns:
The Select_t associated with this sockect.

Implements BLOCXX_NAMESPACE::SelectableIFC.

Definition at line 264 of file Socket.hpp.

References m_impl.

Timeout BLOCXX_NAMESPACE::Socket::getSendTimeout ( ) const [inline]

Get the send timeout.

Returns:
The number of seconds of the send timeout

Definition at line 142 of file Socket.hpp.

References m_impl.

static ShutDownMechanism_t BLOCXX_NAMESPACE::Socket::getShutDownMechanism ( ) [inline, static]
SSL * BLOCXX_NAMESPACE::Socket::getSSL ( ) const

get the SSL structure associated with the socket (if it is an SSL socket)

Returns:
a pointer to the SSL structure

Definition at line 139 of file Socket_needs_SSL.cpp.

References BLOCXX_NAMESPACE::IntrusiveReference< T >::cast_to(), and m_impl.

bool BLOCXX_NAMESPACE::Socket::gotShutDown ( ) [static]

Have the sockets been shutdown?

Returns:
true if the sockets have been shutdown

Definition at line 128 of file Socket.cpp.

References BLOCXX_NAMESPACE::b_gotShutDown, and BLOCXX_NAMESPACE::shutdownMutex.

bool BLOCXX_NAMESPACE::Socket::isConnected ( ) const [inline]

Get connected state.

Definition at line 274 of file Socket.hpp.

References m_impl.

bool BLOCXX_NAMESPACE::Socket::peerCertVerified ( ) const

did the peer certificate pass verification?

Returns:
true if peer cert verified.

Definition at line 151 of file Socket_needs_SSL.cpp.

References BLOCXX_NAMESPACE::IntrusiveReference< T >::cast_to(), and m_impl.

int BLOCXX_NAMESPACE::Socket::read ( void *  dataIn,
int  dataInLen,
ErrorAction  errorAsException = E_RETURN_ON_ERROR 
) [inline, virtual]

Read from the socket.

Parameters:
dataIna pointer to a buffer where data should be copied to
dataInLenthe number of bytes to read.
errorAsExceptiontrue if errors should throw exceptions.
Returns:
the number of bytes read.
Exceptions:
SocketException

Implements BLOCXX_NAMESPACE::IOIFC.

Definition at line 191 of file Socket.hpp.

References m_impl.

bool BLOCXX_NAMESPACE::Socket::receiveTimeOutExpired ( ) const [inline]

Has the receive timeout expired?

Returns:
true if the receive timeout has expired.

Definition at line 172 of file Socket.hpp.

References m_impl.

BLOCXX_DEPRECATED void BLOCXX_NAMESPACE::Socket::setConnectTimeout ( int  seconds) [inline]

Set the connect timeout on the socket.

Parameters:
secondsthe number of seconds for the connect timeout

Definition at line 147 of file Socket.hpp.

References m_impl, and BLOCXX_NAMESPACE::Timeout::relative().

void BLOCXX_NAMESPACE::Socket::setConnectTimeout ( const Timeout timeout) [inline]

Set the connect timeout on the socket.

Parameters:
secondsthe number of seconds for the connect timeout

Definition at line 152 of file Socket.hpp.

References m_impl.

void BLOCXX_NAMESPACE::Socket::setReceiveTimeout ( const Timeout timeout) [inline]

Set the receive timeout on the socket.

Parameters:
secondsthe number of seconds for the receive timeout

Definition at line 122 of file Socket.hpp.

References m_impl.

BLOCXX_DEPRECATED void BLOCXX_NAMESPACE::Socket::setReceiveTimeout ( int  seconds) [inline]

Set the receive timeout on the socket.

Parameters:
secondsthe number of seconds for the receive timeout

Definition at line 117 of file Socket.hpp.

References m_impl, and BLOCXX_NAMESPACE::Timeout::relative().

void BLOCXX_NAMESPACE::Socket::setSendTimeout ( const Timeout timeout) [inline]

Set the send timeout on the socket.

Parameters:
secondsthe number of seconds for the send timeout

Definition at line 137 of file Socket.hpp.

References m_impl.

BLOCXX_DEPRECATED void BLOCXX_NAMESPACE::Socket::setSendTimeout ( int  seconds) [inline]

Set the send timeout on the socket.

Parameters:
secondsthe number of seconds for the send timeout

Definition at line 132 of file Socket.hpp.

References m_impl, and BLOCXX_NAMESPACE::Timeout::relative().

void BLOCXX_NAMESPACE::Socket::setTimeouts ( const Timeout timeout) [inline]

Set all timeouts (send, receive, connect)

Parameters:
secondsthe number of seconds for the timeouts

Definition at line 167 of file Socket.hpp.

References m_impl.

BLOCXX_DEPRECATED void BLOCXX_NAMESPACE::Socket::setTimeouts ( int  seconds) [inline]

Set all timeouts (send, receive, connect)

Parameters:
secondsthe number of seconds for the timeouts

Definition at line 162 of file Socket.hpp.

References m_impl, and BLOCXX_NAMESPACE::Timeout::relative().

void BLOCXX_NAMESPACE::Socket::shutdownAllSockets ( ) [static]

Call this to shutdown all sockets.

This is usefull when a server is shutting down. We want any outstanding connections to close immediately.

Definition at line 72 of file Socket.cpp.

References BLOCXX_NAMESPACE::b_gotShutDown, BLOCXX_ASSERT, BLOCXX_THROW_ERRNO_MSG, BLOCXX_NAMESPACE::LazyGlobal< T, PODType, FactoryT >::get(), s_shutDownMechanism, BLOCXX_NAMESPACE::shutdownMutex, and BLOCXX_NAMESPACE::BinarySerialization::writeString().

bool BLOCXX_NAMESPACE::Socket::waitForInput ( const Timeout timeout = Timeout::infinite) [inline]

Wait for input on the socket for a specified length of time.

Parameters:
timeOutSecsthe number of seconds to wait.
Returns:
true if the timeout expired
Exceptions:
SocketException

Definition at line 209 of file Socket.hpp.

References m_impl.

BLOCXX_DEPRECATED bool BLOCXX_NAMESPACE::Socket::waitForInput ( int  timeOutSecs) [inline]

Wait for input on the socket for a specified length of time.

Parameters:
timeOutSecsthe number of seconds to wait.
Returns:
true if the timeout expired
Exceptions:
SocketException

Definition at line 200 of file Socket.hpp.

References m_impl, and BLOCXX_NAMESPACE::Timeout::relative().

BLOCXX_DEPRECATED bool BLOCXX_NAMESPACE::Socket::waitForOutput ( int  timeOutSecs) [inline]

Wait for output on the socket for a specified length of time.

Parameters:
timeOutSecsthe number of seconds to wait.
Returns:
true if the timeout expired
Exceptions:
SocketException

Definition at line 218 of file Socket.hpp.

References m_impl, and BLOCXX_NAMESPACE::Timeout::relative().

bool BLOCXX_NAMESPACE::Socket::waitForOutput ( const Timeout timeout = Timeout::infinite) [inline]

Wait for output on the socket for a specified length of time.

Parameters:
timeOutSecsthe number of seconds to wait.
Returns:
true if the timeout expired
Exceptions:
SocketException

Definition at line 227 of file Socket.hpp.

References m_impl.

int BLOCXX_NAMESPACE::Socket::write ( const void *  dataOut,
int  dataOutLen,
ErrorAction  errorAsException = E_RETURN_ON_ERROR 
) [inline, virtual]

Write some data to the socket.

Parameters:
dataOuta pointer to the memory to be written to the socket.
dataOutLenthe length of the data to be written
errorAsExceptiontrue if errors should throw exceptions.
Returns:
the number of bytes written.
Exceptions:
SocketException

Implements BLOCXX_NAMESPACE::IOIFC.

Definition at line 181 of file Socket.hpp.

References m_impl.


Friends And Related Function Documentation

friend class ServerSocketImpl [friend]

Definition at line 347 of file Socket.hpp.


Member Data Documentation

const int INFINITE_TIMEOUT BLOCXX_NAMESPACE::Socket::BLOCXX_DEPRECATED = -1 [static]

Definition at line 112 of file Socket.hpp.

Definition at line 332 of file Socket.hpp.

Referenced by getSSL(), peerCertVerified(), and Socket().


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