Updated TCPServer and WEBServer core logic

This commit is contained in:
anschrammh 2019-10-13 16:43:54 +02:00
parent 1450a8c0e5
commit c777e23a52
3 changed files with 33 additions and 29 deletions

View File

@ -140,9 +140,9 @@ class TCPServer
if(_currentClient->_dataSize > 0) if(_currentClient->_dataSize > 0)
{ {
processClientData(_currentClient);//We process the actual data
_currentClient->_newDataAvailable = false; _currentClient->_newDataAvailable = false;
} }
processClientData(_currentClient);//We process the actual data
if(_currentClient->_clientState == TCPClient::ClientState::DISCARDED) if(_currentClient->_clientState == TCPClient::ClientState::DISCARDED)
{ {

View File

@ -34,7 +34,7 @@ class WEBServer : public TCPServer<T>
uint16_t maxBodyBuffer; uint16_t maxBodyBuffer;
}; };
WEBServer(unsigned int port = 80, SDCardManager *sdCardManager = NULL, uint8_t maxClient = MAX_CLIENT, uint16_t clientDataBufferSize = 512) : TCPServer<T>(port, maxClient, clientDataBufferSize), _sdCardManager(sdCardManager) {} WEBServer(unsigned int port = 80, SDCardManager *sdCardManager = NULL, uint8_t maxClient = MAX_CLIENT, uint16_t clientDataBufferSize = 255) : TCPServer<T>(port, maxClient, clientDataBufferSize), _sdCardManager(sdCardManager) {}
boolean addApiRoutine(const char *uri, boolean (*apiRoutine)(HttpRequestData&, WiFiClient*, void*), void *pData, HttpRequestMethod HRM = UNDEFINED) boolean addApiRoutine(const char *uri, boolean (*apiRoutine)(HttpRequestData&, WiFiClient*, void*), void *pData, HttpRequestMethod HRM = UNDEFINED)
{ {
@ -51,7 +51,7 @@ class WEBServer : public TCPServer<T>
private: private:
virtual T* createNewClient(WiFiClient wc) virtual T* createNewClient(WiFiClient wc)
{ {
return new T(wc, TCPServer<T>::freeClientId()); return new T(wc, TCPServer<T>::freeClientId(), TCPServer<T>::_clientDataBufferSize);
} }
virtual void greetClient(T *client) virtual void greetClient(T *client)
@ -61,33 +61,36 @@ class WEBServer : public TCPServer<T>
virtual void processClientData(T *client) virtual void processClientData(T *client)
{ {
switch(client->_WEBClientState) if(client->_dataSize > 0)
{ {
case ACCEPTED: switch(client->_WEBClientState)
#ifdef DEBUG_WEBS {
Serial.println("WEBServer : ACCEPTED"); case ACCEPTED:
#endif #ifdef DEBUG_WEBS
queryParser(client); Serial.println("WEBServer : ACCEPTED");
break; #endif
case QUERY_PARSED: queryParser(client);
#ifdef DEBUG_WEBS break;
Serial.println("WEBServer : QUERY_PARSED"); case QUERY_PARSED:
#endif #ifdef DEBUG_WEBS
sendDataToClient(client); Serial.println("WEBServer : QUERY_PARSED");
break; #endif
case RESPONSE_SENT: sendDataToClient(client);
#ifdef DEBUG_WEBS break;
Serial.println("WEBServer : RESPONSE_SENT"); case RESPONSE_SENT:
#endif #ifdef DEBUG_WEBS
client->_WEBClientState = WEBClientState::DONE; Serial.println("WEBServer : RESPONSE_SENT");
break; #endif
case DONE: client->_WEBClientState = WEBClientState::DONE;
#ifdef DEBUG_WEBS break;
Serial.println("WEBServer : DONE"); case DONE:
#endif #ifdef DEBUG_WEBS
client->_clientState = TCPClient::ClientState::DISCARDED; Serial.println("WEBServer : DONE");
break; #endif
} client->_clientState = TCPClient::ClientState::DISCARDED;
break;
}
}
} }
void queryParser(T *client) void queryParser(T *client)

View File

@ -17,5 +17,6 @@
#define SOFT_VERSION "1.2.1" //Corrected a bug in the TaskSchedulerManager class #define SOFT_VERSION "1.2.1" //Corrected a bug in the TaskSchedulerManager class
#define SOFT_VERSION "1.3.0" //Implemented multi-client non blocking webserver #define SOFT_VERSION "1.3.0" //Implemented multi-client non blocking webserver
#define SOFT_VERSION "1.3.1" //Fixed sdCardUnmount api call #define SOFT_VERSION "1.3.1" //Fixed sdCardUnmount api call
#define SOFT_VERSION "1.3.2" //Modified TCPServer and WEBServer core logic
#endif //VERSIONS_H #endif //VERSIONS_H