blocxx
|
#include <Socket.hpp>
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 |
Definition at line 65 of file Socket.hpp.
Definition at line 293 of file Socket.hpp.
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.
sslCtx | The 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.
isSSL | is 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()
fd | a handle to the existing socket |
isSSL | is 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
addr | the address of the peer machine |
addrType | the address type of the socket is it an SSL socket? |
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()
fd | a handle to the existing socket |
addrType | the address type of the socket |
sslCtx | a SSL server context reference |
Definition at line 104 of file Socket_needs_SSL.cpp.
References BLOCXX_THROW, and m_impl.
void BLOCXX_NAMESPACE::Socket::connect | ( | const SocketAddress & | addr | ) | [inline] |
Connect to a peer node.
addr | The address of the machine to connect to. |
SocketException |
Definition at line 105 of file Socket.hpp.
References m_impl.
void BLOCXX_NAMESPACE::Socket::createShutDownMechanism | ( | ) | [static] |
Definition at line 96 of file Socket.cpp.
References BLOCXX_NAMESPACE::b_gotShutDown, BLOCXX_ASSERT, BLOCXX_NAMESPACE::UnnamedPipe::createUnnamedPipe(), BLOCXX_NAMESPACE::UnnamedPipe::E_NONBLOCKING, BLOCXX_NAMESPACE::LazyGlobal< T, PODType, FactoryT >::get(), s_shutDownMechanism, and BLOCXX_NAMESPACE::shutdownMutex.
void BLOCXX_NAMESPACE::Socket::deleteShutDownMechanism | ( | ) | [static] |
Definition at line 114 of file Socket.cpp.
References BLOCXX_NAMESPACE::LazyGlobal< T, PODType, FactoryT >::get(), s_shutDownMechanism, and BLOCXX_NAMESPACE::shutdownMutex.
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.
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.
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.
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.
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.
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.
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.
Definition at line 239 of file Socket.hpp.
References m_impl.
Timeout BLOCXX_NAMESPACE::Socket::getReceiveTimeout | ( | ) | const [inline] |
Get the receive timeout.
Definition at line 127 of file Socket.hpp.
References m_impl.
Select_t BLOCXX_NAMESPACE::Socket::getSelectObj | ( | ) | const [inline, virtual] |
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.
Definition at line 142 of file Socket.hpp.
References m_impl.
static ShutDownMechanism_t BLOCXX_NAMESPACE::Socket::getShutDownMechanism | ( | ) | [inline, static] |
Definition at line 296 of file Socket.hpp.
Referenced by BLOCXX_NAMESPACE::SocketBaseImpl::connect(), and BLOCXX_NAMESPACE::SocketUtils::waitForIO().
SSL * BLOCXX_NAMESPACE::Socket::getSSL | ( | ) | const |
get the SSL structure associated with the socket (if it is an SSL socket)
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?
Definition at line 128 of file Socket.cpp.
References BLOCXX_NAMESPACE::b_gotShutDown, and BLOCXX_NAMESPACE::shutdownMutex.
bool BLOCXX_NAMESPACE::Socket::isConnected | ( | ) | const [inline] |
bool BLOCXX_NAMESPACE::Socket::peerCertVerified | ( | ) | const |
did the peer certificate pass verification?
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.
dataIn | a pointer to a buffer where data should be copied to |
dataInLen | the number of bytes to read. |
errorAsException | true if errors should throw 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?
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.
seconds | the 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.
seconds | the 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.
seconds | the 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.
seconds | the 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.
seconds | the 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.
seconds | the 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)
seconds | the 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)
seconds | the 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.
timeOutSecs | the number of seconds to wait. |
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.
timeOutSecs | the number of seconds to wait. |
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.
timeOutSecs | the number of seconds to wait. |
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.
timeOutSecs | the number of seconds to wait. |
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.
dataOut | a pointer to the memory to be written to the socket. |
dataOutLen | the length of the data to be written |
errorAsException | true if errors should throw exceptions. |
SocketException |
Implements BLOCXX_NAMESPACE::IOIFC.
Definition at line 181 of file Socket.hpp.
References m_impl.
friend class ServerSocketImpl [friend] |
Definition at line 347 of file Socket.hpp.
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().
LazyGlobal< Socket::ShutDownMechanism_t, int, Socket::ShutDownMechanismFactory > BLOCXX_NAMESPACE::Socket::s_shutDownMechanism = BLOCXX_LAZY_GLOBAL_INIT(0) [static, private] |
Definition at line 345 of file Socket.hpp.
Referenced by createShutDownMechanism(), deleteShutDownMechanism(), and shutdownAllSockets().