Allow callback when request disconnects (#284)

* Allow callback when request disconnects

* Use typedef std::function<void(void)> ArDisconnectHandler
This commit is contained in:
Luc
2017-11-16 18:45:33 +01:00
committed by Me No Dev
parent 8604f67a5f
commit 63b5303880
2 changed files with 10 additions and 0 deletions

View File

@@ -62,6 +62,7 @@ typedef enum {
HTTP_ANY = 0b01111111, HTTP_ANY = 0b01111111,
} WebRequestMethod; } WebRequestMethod;
typedef uint8_t WebRequestMethodComposite; typedef uint8_t WebRequestMethodComposite;
typedef std::function<void(void)> ArDisconnectHandler;
/* /*
* PARAMETER :: Chainable object to hold GET/POST and FILE parameters * PARAMETER :: Chainable object to hold GET/POST and FILE parameters
@@ -128,6 +129,7 @@ class AsyncWebServerRequest {
AsyncWebHandler* _handler; AsyncWebHandler* _handler;
AsyncWebServerResponse* _response; AsyncWebServerResponse* _response;
StringArray _interestingHeaders; StringArray _interestingHeaders;
ArDisconnectHandler _onDisconnectfn;
String _temp; String _temp;
uint8_t _parseState; uint8_t _parseState;
@@ -202,6 +204,7 @@ class AsyncWebServerRequest {
const char * requestedConnTypeToString() const; const char * requestedConnTypeToString() const;
RequestedConnectionType requestedConnType() const { return _reqconntype; } RequestedConnectionType requestedConnType() const { return _reqconntype; }
bool isExpectedRequestedConnType(RequestedConnectionType erct1, RequestedConnectionType erct2 = RCT_NOT_USED, RequestedConnectionType erct3 = RCT_NOT_USED); bool isExpectedRequestedConnType(RequestedConnectionType erct1, RequestedConnectionType erct2 = RCT_NOT_USED, RequestedConnectionType erct3 = RCT_NOT_USED);
void onDisconnect (ArDisconnectHandler fn);
//hash is the string representation of: //hash is the string representation of:
// base64(user:pass) for basic or // base64(user:pass) for basic or

View File

@@ -214,8 +214,15 @@ void AsyncWebServerRequest::_onTimeout(uint32_t time){
_client->close(); _client->close();
} }
void AsyncWebServerRequest::onDisconnect (ArDisconnectHandler fn){
_onDisconnectfn=fn;
}
void AsyncWebServerRequest::_onDisconnect(){ void AsyncWebServerRequest::_onDisconnect(){
//os_printf("d\n"); //os_printf("d\n");
if(_onDisconnectfn) {
_onDisconnectfn();
}
_server->_handleDisconnect(this); _server->_handleDisconnect(this);
} }