11 #include <mrpt/config.h> 46 #if MRPT_WORD_SIZE == 64 65 size_t Read(
void* Buffer,
size_t Count)
override;
73 size_t Write(
const void* Buffer,
size_t Count)
override;
95 const std::string& remotePartAddress,
unsigned short remotePartTCPPort,
96 unsigned int timeout_ms = 0);
135 void* Buffer,
const size_t Count,
const int timeoutStart_ms = -1,
136 const int timeoutBetween_ms = -1);
150 const void* Buffer,
const size_t Count,
const int timeout_ms = -1);
159 template <
class MESSAGE>
160 bool sendMessage(
const MESSAGE& outMsg,
const int timeout_ms = -1)
163 const char* magic =
"MRPTMessage";
166 if (written != toWrite)
return false;
168 toWrite =
sizeof(outMsg.type);
169 written =
writeAsync(&outMsg.type, toWrite, timeout_ms);
170 if (written != toWrite)
return false;
172 uint32_t contentLen = outMsg.content.size();
173 toWrite =
sizeof(contentLen);
174 written =
writeAsync(&contentLen, toWrite, timeout_ms);
175 if (written != toWrite)
return false;
177 toWrite = contentLen;
178 written =
writeAsync(&outMsg.content[0], toWrite, timeout_ms);
179 if (written != toWrite)
return false;
193 template <
class MESSAGE>
195 MESSAGE& inMsg,
const unsigned int timeoutStart_ms = 100,
196 const unsigned int timeoutBetween_ms = 1000)
202 readAsync(magic, toRead, timeoutStart_ms, timeoutBetween_ms);
203 if (actRead != toRead)
return false;
206 if (0 != ::strcmp(
"MRPTMessage", magic))
return false;
208 toRead =
sizeof(inMsg.type);
210 &inMsg.type, toRead, timeoutBetween_ms, timeoutBetween_ms);
211 if (actRead != toRead)
return false;
214 toRead =
sizeof(contentLen);
216 &contentLen, toRead, timeoutBetween_ms, timeoutBetween_ms);
217 if (actRead != toRead)
return false;
218 inMsg.content.resize(contentLen);
222 &inMsg.content[0], toRead, timeoutBetween_ms, timeoutBetween_ms);
223 if (actRead != toRead)
return false;
static unsigned int DNS_LOOKUP_TIMEOUT_MS
See description of CClientTCPSocket.
~CClientTCPSocket()
Destructor.
bool sendMessage(const MESSAGE &outMsg, const int timeout_ms=-1)
Send a message through the TCP stream.
void connect(const std::string &remotePartAddress, unsigned short remotePartTCPPort, unsigned int timeout_ms=0)
Establishes a connection with a remote part.
size_t Write(const void *Buffer, size_t Count) override
Introduces a virtual method responsible for writing to the stream.
bool isConnected()
Returns true if this objects represents a successfully connected socket.
bool receiveMessage(MESSAGE &inMsg, const unsigned int timeoutStart_ms=100, const unsigned int timeoutBetween_ms=1000)
Waits for an incoming message through the TCP stream.
uint64_t Seek(int64_t off, CStream::TSeekOrigin org=sFromBeginning) override
This virtual method has no effect in this implementation over a TCP socket, and its use raises an exc...
int setSOSendBufffer(const int &newValue)
Set the size of the SO send buffer.
int getSOSendBufffer()
Return the current size of the SO send buffer.
size_t Read(void *Buffer, size_t Count) override
Introduces a virtual method responsible for reading from the stream (This method BLOCKS) This method ...
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
uint64_t getTotalBytesCount() const override
This virtual method has no effect in this implementation over a TCP socket, and its use raises an exc...
std::string m_remotePartIP
The IP address of the remote part of the connection.
A TCP socket that can be wait for client connections to enter.
CClientTCPSocket()
Default constructor.
int getTCPNoDelay()
Return the value of the TCPNoDelay option.
GLsizei const GLchar ** string
std::string getLastErrorStr()
Returns a description of the last Sockets error.
unsigned __int64 uint64_t
size_t writeAsync(const void *Buffer, const size_t Count, const int timeout_ms=-1)
A method for writing to the socket with optional timeouts.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
uint64_t getPosition() const override
This virtual method has no effect in this implementation over a TCP socket, and its use raises an exc...
int setTCPNoDelay(const int &newValue)
Set the TCP no delay option of the protocol (Nagle algorithm).
A TCP socket that can be connected to a TCP server, implementing MRPT's CStream interface for passing...
void close()
Closes the connection.
unsigned short m_remotePartPort
The TCP port of the remote part of the connection.
uint32_t m_hSock
The handle for the connected TCP socket, or INVALID_SOCKET.
size_t getReadPendingBytes()
Return the number of bytes already in the receive queue (they can be read without waiting) ...
size_t readAsync(void *Buffer, const size_t Count, const int timeoutStart_ms=-1, const int timeoutBetween_ms=-1)
A method for reading from the socket with an optional timeout.
unsigned __int32 uint32_t
void sendString(const std::string &str)
Writes a string to the socket.