18 #include <vlutil/vlInetSocket.h>
19 #include <vlutil/vlPrint.h>
24 using namespace MAKRti;
35 DtMsgSocket(DtBoost::shared_ptr<DtMsgHeaderReader> hdrReader,
41 DtBoost::shared_ptr<DtMsgHeaderReader> hdrReader,
size_t recvBuffSize);
47 virtual int sendMessage(caddr_t msg,
size_t msgSize,
bool deleteAfterSend,
48 const DtInetAddr& destAddr = DtInetAddr::inaddrAny()) = 0;
52 virtual bool flush() = 0;
55 virtual int recvMessage(caddr_t *buffptr) = 0;
59 virtual int recvMessageWithSrc(caddr_t *buffptr, DtInetEndpoint& src) = 0;
62 virtual bool closeSocket();
65 virtual DtInetSockState state()
const;
68 void printStateToStream(MAKRti::DtOutputStream& stream)
const;
71 const DtString& lastError()
const;
74 virtual void enableBundling(
size_t maxBundleSize) = 0;
77 virtual void disableBundling() = 0;
80 virtual void enableCompression(DtU8 compressionLevel) = 0;
83 virtual void disableCompression() = 0;
86 const DtInetEndpoint&
localEndpoint()
const {
return mySocket->localEndpoint(); }
98 unsigned int descriptor()
const {
return mySocket->descriptor(); }
101 DtInetSocket* inetSocket();
112 void expandRecvBuffer(
size_t sizeNeeded );
132 DtInetSockState state = DtInetSockState_NOT_INITIALIZED;
135 state = mySocket->state();
142 MAKRti::DtString stateStr =
"Socket State = ";
144 stream << stateStr.c_str() << std::endl;
154 if(sizeNeeded > myRecvBuffer.size())
156 div_t ratio = div( (
int)sizeNeeded, (
int)myRecvBuffer.size() );
157 size_t newSize = myRecvBuffer.size() * ( ratio.quot + 1 );
158 myRecvBuffer.resize(newSize);
164 return mySocket.get();