mirror of
https://github.com/me-no-dev/ESPAsyncWebServer.git
synced 2026-01-27 09:12:18 +01:00
Reset all handlers. This allowing to use same server few times (#93)
* Reset all handlers. This allowing to use same server few times during app life. E.g. for WiFi manager when hardware sepups WiFi connection and as HTTP server during hardware life cycle
This commit is contained in:
@@ -40,19 +40,8 @@ AsyncWebServer::AsyncWebServer(uint16_t port):_server(port), _rewrites(0), _hand
|
||||
}
|
||||
|
||||
AsyncWebServer::~AsyncWebServer(){
|
||||
while(_rewrites != NULL){
|
||||
AsyncWebRewrite *r = _rewrites;
|
||||
_rewrites = r->next;
|
||||
delete r;
|
||||
}
|
||||
while(_handlers != NULL){
|
||||
AsyncWebHandler *h = _handlers;
|
||||
_handlers = h->next;
|
||||
delete h;
|
||||
}
|
||||
if (_catchAllHandler != NULL){
|
||||
delete _catchAllHandler;
|
||||
}
|
||||
reset();
|
||||
delete _catchAllHandler;
|
||||
}
|
||||
|
||||
AsyncWebRewrite& AsyncWebServer::addRewrite(AsyncWebRewrite* rewrite){
|
||||
@@ -66,6 +55,24 @@ AsyncWebRewrite& AsyncWebServer::addRewrite(AsyncWebRewrite* rewrite){
|
||||
return *rewrite;
|
||||
}
|
||||
|
||||
bool AsyncWebServer::removeRewrite(AsyncWebRewrite *rewrite){
|
||||
if(rewrite == _rewrites){
|
||||
_rewrites = _rewrites->next;
|
||||
return true;
|
||||
}
|
||||
AsyncWebRewrite *r = _rewrites;
|
||||
while(r != NULL){
|
||||
if(rewrite == r->next){
|
||||
AsyncWebRewrite *d = r->next;
|
||||
r->next = d->next;
|
||||
delete d;
|
||||
return true;
|
||||
}
|
||||
r = r->next;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
AsyncWebRewrite& AsyncWebServer::rewrite(const char* from, const char* to){
|
||||
return addRewrite(new AsyncWebRewrite(from, to));
|
||||
}
|
||||
@@ -81,6 +88,24 @@ AsyncWebHandler& AsyncWebServer::addHandler(AsyncWebHandler* handler){
|
||||
return *handler;
|
||||
}
|
||||
|
||||
bool AsyncWebServer::removeHandler(AsyncWebHandler *handler){
|
||||
if(handler == _handlers){
|
||||
_handlers = _handlers->next;
|
||||
return true;
|
||||
}
|
||||
AsyncWebHandler *h = _handlers;
|
||||
while(h != NULL){
|
||||
if(handler == h->next){
|
||||
AsyncWebHandler *d = h->next;
|
||||
h->next = d->next;
|
||||
delete d;
|
||||
return true;
|
||||
}
|
||||
h = h->next;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void AsyncWebServer::begin(){
|
||||
_server.begin();
|
||||
}
|
||||
@@ -181,3 +206,26 @@ void AsyncWebServer::onFileUpload(ArUploadHandlerFunction fn){
|
||||
void AsyncWebServer::onRequestBody(ArBodyHandlerFunction fn){
|
||||
((AsyncCallbackWebHandler*)_catchAllHandler)->onBody(fn);
|
||||
}
|
||||
|
||||
void AsyncWebServer::reset(){
|
||||
while(_rewrites != NULL){
|
||||
AsyncWebRewrite *r = _rewrites;
|
||||
_rewrites = r->next;
|
||||
delete r;
|
||||
}
|
||||
_rewrites = NULL;
|
||||
|
||||
while(_handlers != NULL){
|
||||
AsyncWebHandler *h = _handlers;
|
||||
_handlers = h->next;
|
||||
delete h;
|
||||
}
|
||||
_handlers = NULL;
|
||||
|
||||
if (_catchAllHandler != NULL){
|
||||
((AsyncCallbackWebHandler*)_catchAllHandler)->onRequest(NULL);
|
||||
((AsyncCallbackWebHandler*)_catchAllHandler)->onUpload(NULL);
|
||||
((AsyncCallbackWebHandler*)_catchAllHandler)->onBody(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user