#include <Socket.hpp>

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) | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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 () |
| Have the sockets been shutdown? | |
| static void | deleteShutDownMechanism () |
| static ShutDownMechanism_t | getShutDownMechanism () |
Static Public Attributes | |
| static const int | INFINITE_TIMEOUT = -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 = { 0 , 0, {0, PTHREAD_MUTEX_INITIALIZER} } |
Friends | |
| class | ServerSocketImpl |
Classes | |
| struct | ShutDownMechanismFactory |
Definition at line 65 of file Socket.hpp.
Definition at line 293 of file Socket.hpp.
| BLOCXX_NAMESPACE::Socket::Socket | ( | ) |
| 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 52 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 69 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 85 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 120 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 103 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::disconnect | ( | ) | [inline] |
Disconnect the (presumably) open connection.
Definition at line 110 of file Socket.hpp.
References m_impl.
| 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::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.
| Timeout BLOCXX_NAMESPACE::Socket::getReceiveTimeout | ( | ) | const [inline] |
Get the receive timeout.
Definition at line 127 of file Socket.hpp.
References m_impl.
| 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::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.
| Timeout BLOCXX_NAMESPACE::Socket::getSendTimeout | ( | ) | const [inline] |
Get the send timeout.
Definition at line 142 of file Socket.hpp.
References m_impl.
| 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.
| Timeout BLOCXX_NAMESPACE::Socket::getConnectTimeout | ( | ) | const [inline] |
Get the connect timeout.
Definition at line 157 of file Socket.hpp.
References m_impl.
| 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::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.
| bool BLOCXX_NAMESPACE::Socket::receiveTimeOutExpired | ( | ) | const [inline] |
Has the receive timeout expired?
Definition at line 172 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.
| 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::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().
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| Select_t BLOCXX_NAMESPACE::Socket::getSelectObj | ( | ) | const [inline, virtual] |
Implements BLOCXX_NAMESPACE::SelectableIFC.
Definition at line 264 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.
| bool BLOCXX_NAMESPACE::Socket::isConnected | ( | ) | const [inline] |
| void BLOCXX_NAMESPACE::Socket::createShutDownMechanism | ( | ) | [static] |
Definition at line 95 of file Socket.cpp.
References BLOCXX_NAMESPACE::b_gotShutDown, BLOCXX_ASSERT, BLOCXX_NAMESPACE::UnnamedPipe::createUnnamedPipe(), BLOCXX_NAMESPACE::UnnamedPipe::E_NONBLOCKING, s_shutDownMechanism, and BLOCXX_NAMESPACE::shutdownMutex.
| 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 71 of file Socket.cpp.
References BLOCXX_NAMESPACE::b_gotShutDown, BLOCXX_ASSERT, BLOCXX_THROW_ERRNO_MSG, s_shutDownMechanism, BLOCXX_NAMESPACE::shutdownMutex, and BLOCXX_NAMESPACE::BinarySerialization::writeString().
| bool BLOCXX_NAMESPACE::Socket::gotShutDown | ( | ) | [static] |
Have the sockets been shutdown?
Definition at line 127 of file Socket.cpp.
References BLOCXX_NAMESPACE::b_gotShutDown, and BLOCXX_NAMESPACE::shutdownMutex.
| void BLOCXX_NAMESPACE::Socket::deleteShutDownMechanism | ( | ) | [static] |
Definition at line 113 of file Socket.cpp.
References s_shutDownMechanism, and BLOCXX_NAMESPACE::shutdownMutex.
| 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 138 of file Socket_needs_SSL.cpp.
References BLOCXX_NAMESPACE::IntrusiveReference< T >::cast_to(), and m_impl.
| bool BLOCXX_NAMESPACE::Socket::peerCertVerified | ( | ) | const |
did the peer certificate pass verification?
Definition at line 150 of file Socket_needs_SSL.cpp.
References BLOCXX_NAMESPACE::IntrusiveReference< T >::cast_to(), and m_impl.
friend class ServerSocketImpl [friend] |
Definition at line 347 of file Socket.hpp.
const int BLOCXX_NAMESPACE::Socket::INFINITE_TIMEOUT = -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 = { 0 , 0, {0, PTHREAD_MUTEX_INITIALIZER} } [static, private] |
Definition at line 345 of file Socket.hpp.
Referenced by createShutDownMechanism(), deleteShutDownMechanism(), and shutdownAllSockets().
1.5.6