1
0
mirror of https://github.com/thooge/esp32-nmea2000-obp60.git synced 2025-12-13 05:53:06 +01:00

add some memory diagnostics

This commit is contained in:
andreas
2021-10-30 12:01:50 +02:00
parent 56aaf595b4
commit e7b2c6e756
14 changed files with 54 additions and 20 deletions

View File

@@ -68,6 +68,7 @@ class GwClient{
overflows=0;
if (client != NULL){
writer=new Writer(client);
LOG_DEBUG(GwLog::DEBUG,"creating SocketWriter %p",writer);
remoteIp=client->remoteIP().toString();
}
}
@@ -76,10 +77,14 @@ class GwClient{
buffer->reset();
if (readBuffer) readBuffer->reset();
overflows=0;
if (writer) delete writer;
if (writer) {
LOG_DEBUG(GwLog::DEBUG,"deleting SocketWriter %p",writer);
delete writer;
}
writer=NULL;
if (client){
writer=new Writer(client);
LOG_DEBUG(GwLog::DEBUG,"creating SocketWriter %p",writer);
remoteIp=client->remoteIP().toString();
}
else{
@@ -162,12 +167,12 @@ GwSocketServer::GwSocketServer(const GwConfigHandler *config,GwLog *logger,int m
this->minId=minId;
maxClients=config->getInt(config->maxClients);
allowReceive=config->getBool(config->readTCP);
}
void GwSocketServer::begin(){
clients=new gwClientPtr[maxClients];
for (int i=0;i<maxClients;i++){
clients[i]=gwClientPtr(new GwClient(wiFiClientPtr(NULL),logger,allowReceive));
}
}
void GwSocketServer::begin(){
server=new WiFiServer(config->getInt(config->serverPort),maxClients);
server->begin();
logger->logString("Socket server created, port=%d",
@@ -177,6 +182,7 @@ void GwSocketServer::begin(){
}
void GwSocketServer::loop(bool handleRead)
{
if (! clients) return;
WiFiClient client = server->available(); // listen for incoming clients
if (client)
@@ -234,7 +240,7 @@ void GwSocketServer::loop(bool handleRead)
}
bool GwSocketServer::readMessages(GwBufferWriter *writer){
if (! allowReceive) return false;
if (! allowReceive || ! clients) return false;
bool hasMessages=false;
for (int i = 0; i < maxClients; i++){
writer->id=minId+i;
@@ -244,6 +250,7 @@ bool GwSocketServer::readMessages(GwBufferWriter *writer){
return hasMessages;
}
void GwSocketServer::sendToClients(const char *buf,int source){
if (! clients) return;
int len=strlen(buf);
int sourceIndex=source-minId;
for (int i = 0; i < maxClients; i++)
@@ -262,6 +269,7 @@ void GwSocketServer::sendToClients(const char *buf,int source){
}
int GwSocketServer::numClients(){
if (! clients) return 0;
int num=0;
for (int i = 0; i < maxClients; i++){
if (clients[i]->hasClient()) num++;

View File

@@ -13,7 +13,7 @@ class GwSocketServer{
private:
const GwConfigHandler *config;
GwLog *logger;
gwClientPtr *clients;
gwClientPtr *clients=NULL;
WiFiServer *server=NULL;
bool allowReceive;
int maxClients;