From 63b5303880023f17e1bca517ac593d8a33955e94 Mon Sep 17 00:00:00 2001 From: Luc Date: Thu, 16 Nov 2017 18:45:33 +0100 Subject: [PATCH] Allow callback when request disconnects (#284) * Allow callback when request disconnects * Use typedef std::function ArDisconnectHandler --- src/ESPAsyncWebServer.h | 3 +++ src/WebRequest.cpp | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/src/ESPAsyncWebServer.h b/src/ESPAsyncWebServer.h index d7056b1..c916fc5 100644 --- a/src/ESPAsyncWebServer.h +++ b/src/ESPAsyncWebServer.h @@ -62,6 +62,7 @@ typedef enum { HTTP_ANY = 0b01111111, } WebRequestMethod; typedef uint8_t WebRequestMethodComposite; +typedef std::function ArDisconnectHandler; /* * PARAMETER :: Chainable object to hold GET/POST and FILE parameters @@ -128,6 +129,7 @@ class AsyncWebServerRequest { AsyncWebHandler* _handler; AsyncWebServerResponse* _response; StringArray _interestingHeaders; + ArDisconnectHandler _onDisconnectfn; String _temp; uint8_t _parseState; @@ -202,6 +204,7 @@ class AsyncWebServerRequest { const char * requestedConnTypeToString() const; RequestedConnectionType requestedConnType() const { return _reqconntype; } bool isExpectedRequestedConnType(RequestedConnectionType erct1, RequestedConnectionType erct2 = RCT_NOT_USED, RequestedConnectionType erct3 = RCT_NOT_USED); + void onDisconnect (ArDisconnectHandler fn); //hash is the string representation of: // base64(user:pass) for basic or diff --git a/src/WebRequest.cpp b/src/WebRequest.cpp index daf652a..72bdfa1 100644 --- a/src/WebRequest.cpp +++ b/src/WebRequest.cpp @@ -214,8 +214,15 @@ void AsyncWebServerRequest::_onTimeout(uint32_t time){ _client->close(); } +void AsyncWebServerRequest::onDisconnect (ArDisconnectHandler fn){ + _onDisconnectfn=fn; +} + void AsyncWebServerRequest::_onDisconnect(){ //os_printf("d\n"); + if(_onDisconnectfn) { + _onDisconnectfn(); + } _server->_handleDisconnect(this); }