42#ifndef BLOCXX_SOCKETBASEIMPL_HPP_INCLUDE_GUARD_
43#define BLOCXX_SOCKETBASEIMPL_HPP_INCLUDE_GUARD_
44#include "blocxx/BLOCXX_config.h"
55#if defined(BLOCXX_HAVE_ISTREAM) && defined(BLOCXX_HAVE_OSTREAM)
76 virtual void disconnect();
83 void setTimeouts(
const Timeout& timeout) { m_recvTimeout = m_sendTimeout = m_connectTimeout = timeout; }
85 int write(
const void* dataOut,
int dataOutLen,
86 ErrorAction errorAsException = E_RETURN_ON_ERROR);
87 int read(
void* dataIn,
int dataInLen,
88 ErrorAction errorAsException = E_RETURN_ON_ERROR);
89 virtual bool waitForInput(
const Timeout& timeout);
90 bool waitForOutput(
const Timeout& timeout);
91 std::istream& getInputStream();
92 std::ostream& getOutputStream();
93 std::iostream& getIOStream();
99 static void setDumpFiles(
const String& in,
const String& out);
101 virtual int readAux(
void* dataIn,
int dataInLen) = 0;
102 virtual int writeAux(
const void* dataOut,
int dataOutLen) = 0;
108#if defined(BLOCXX_WIN32)
113 void fillInetAddrParms();
114#if !defined(BLOCXX_WIN32)
115 void fillUnixAddrParms();
119#if defined(BLOCXX_WIN32)
120 static int waitForEvent(HANDLE event,
int secsToTimeout=-1);
SocketStreamBuffer m_streamBuf
SocketAddress getLocalAddress() const
void setConnectTimeout(const Timeout &timeout)
SocketAddress getPeerAddress() const
SocketAddress m_peerAddress
void setTimeouts(const Timeout &timeout)
static String m_traceFileOut
virtual int readAux(void *dataIn, int dataInLen)=0
bool receiveTimeOutExpired() const
Timeout getSendTimeout() const
Timeout getReceiveTimeout() const
Timeout getConnectTimeout() const
SocketAddress m_localAddress
void setSendTimeout(const Timeout &timeout)
static String m_traceFileIn
virtual int writeAux(const void *dataOut, int dataOutLen)=0
void setReceiveTimeout(const Timeout &timeout)
SocketBaseImpl(const SocketBaseImpl &arg)
SocketHandle_t getfd() const
This String class is an abstract data type that represents as NULL terminated string of characters.
A timeout can be absolute, which means that it will happen at the specified DateTime.
BLOCXX_EXPORT_TEMPLATE(BLOCXX_COMMON_API, Array, Bool)