39 #ifndef BLOCXX_SOCKET_HPP_INCLUDE_GUARD_
40 #define BLOCXX_SOCKET_HPP_INCLUDE_GUARD_
41 #include "blocxx/BLOCXX_config.h"
57 #include <openssl/ssl.h>
65 class BLOCXX_COMMON_API Socket :
public SelectableIFC,
public IOIFC
105 void connect(
const SocketAddress& addr)
106 {
m_impl->connect(addr); }
110 void disconnect() {
m_impl->disconnect(); }
122 void setReceiveTimeout(
const Timeout& timeout) {
m_impl->setReceiveTimeout(timeout);}
127 Timeout getReceiveTimeout()
const {
return m_impl->getReceiveTimeout(); }
137 void setSendTimeout(
const Timeout& timeout) {
m_impl->setSendTimeout(timeout); }
152 void setConnectTimeout(
const Timeout& timeout) {
m_impl->setConnectTimeout(timeout); }
172 bool receiveTimeOutExpired()
const {
return m_impl->receiveTimeOutExpired(); }
181 int write(
const void* dataOut,
int dataOutLen, ErrorAction errorAsException = E_RETURN_ON_ERROR)
182 {
return m_impl->write(dataOut, dataOutLen, errorAsException); }
191 int read(
void* dataIn,
int dataInLen, ErrorAction errorAsException = E_RETURN_ON_ERROR)
192 {
return m_impl->read(dataIn, dataInLen, errorAsException); }
210 {
return m_impl->waitForInput(timeout); }
228 {
return m_impl->waitForOutput(timeout); }
234 SocketAddress getLocalAddress()
const {
return m_impl->getLocalAddress(); }
245 std::istream& getInputStream()
246 {
return m_impl->getInputStream(); }
252 std::ostream& getOutputStream()
253 {
return m_impl->getOutputStream(); }
260 {
return m_impl->getIOStream(); }
274 bool isConnected()
const {
return m_impl->isConnected(); }
276 static void createShutDownMechanism();
282 static void shutdownAllSockets();
288 static
void deleteShutDownMechanism();
290 #if defined(BLOCXX_WIN32)
298 return s_shutDownMechanism;
301 #ifndef BLOCXX_NO_SSL
313 bool peerCertVerified()
const;
328 #pragma warning (push)
329 #pragma warning (disable: 4251)
335 #pragma warning (pop)