83 lines
1.7 KiB
C++
83 lines
1.7 KiB
C++
#include "TCPClient.h"
|
|
|
|
//#define DEBUG_CL
|
|
|
|
TCPClient::TCPClient(WiFiClient client, uint8_t id, uint16_t dataBufferSize) : _client(client),
|
|
_clientState(NEW),
|
|
_error(OK),
|
|
_data(NULL),
|
|
_dataSize(0),
|
|
_dataBufferSize(dataBufferSize+1),
|
|
_newDataAvailable(false),
|
|
_id(id)
|
|
{
|
|
#ifdef DEBUG_CL
|
|
Serial.println("TCPClient : Standard constructor called");
|
|
#endif
|
|
|
|
uint8_t *p = (uint8_t *) malloc(sizeof(uint8_t) * _dataBufferSize);
|
|
if(p != NULL)
|
|
_data = p;
|
|
else
|
|
_error = MALLOC_ERR;
|
|
}
|
|
|
|
TCPClient::TCPClient(const TCPClient &Object) : _client(Object._client),
|
|
_clientState(Object._clientState),
|
|
_error(Object._error),
|
|
_data(NULL),
|
|
_dataSize(Object._dataSize),
|
|
_dataBufferSize(Object._dataBufferSize),
|
|
_newDataAvailable(Object._newDataAvailable),
|
|
_id(Object._id)
|
|
{
|
|
#ifdef DEBUG_CL
|
|
Serial.println("TCPClient : Copy constructor called");
|
|
#endif
|
|
|
|
uint8_t *p = (uint8_t *) malloc(sizeof(uint8_t) * _dataBufferSize);
|
|
if(p != NULL)
|
|
{
|
|
_data = p;
|
|
memcpy(_data,Object._data,_dataSize);
|
|
}
|
|
else
|
|
_error = MALLOC_ERR;
|
|
}
|
|
|
|
TCPClient::~TCPClient()
|
|
{
|
|
#ifdef DEBUG_CL
|
|
Serial.println("TCPClient : Destructor called");
|
|
#endif
|
|
|
|
free(_data);
|
|
}
|
|
|
|
bool TCPClient::operator==(TCPClient& Object)
|
|
{
|
|
return this->_client == Object._client;
|
|
}
|
|
|
|
bool TCPClient::closeConnection()
|
|
{
|
|
_client.stop();
|
|
}
|
|
|
|
void TCPClient::freeDataBuffer(uint16_t size)
|
|
{
|
|
if(size > _dataBufferSize-1) size = _dataBufferSize - 1;
|
|
|
|
uint16_t secureSize = size > _dataSize ? _dataSize : size;
|
|
|
|
if(*(_data + secureSize) == '\0')
|
|
{
|
|
#ifdef DEBUG_CL
|
|
Serial.println("Its the terminating string");
|
|
#endif
|
|
}
|
|
|
|
memmove(_data, _data + secureSize, _dataSize - secureSize + 1 /*We do not forget to copy the \0 at then end*/);
|
|
_dataSize -= secureSize;
|
|
}
|