Merge pull request #9590 from s-hadinger/web_optim2

Webserver->on() optimization phase 2
This commit is contained in:
Theo Arends 2020-10-20 20:21:08 +02:00 committed by GitHub
commit bc00e251f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 30 additions and 25 deletions

View File

@ -874,6 +874,10 @@ const WebServerDispatch_t WebServerDispatch[] PROGMEM = {
#endif // Not FIRMWARE_MINIMAL #endif // Not FIRMWARE_MINIMAL
}; };
void WebServer_on(const char * prefix, void (*func)(void), uint8_t method = HTTP_ANY) {
Webserver->on((const __FlashStringHelper *) prefix, (HTTPMethod) method, func);
}
void StartWebserver(int type, IPAddress ipweb) void StartWebserver(int type, IPAddress ipweb)
{ {
if (!Settings.web_refresh) { Settings.web_refresh = HTTP_REFRESH_TIME; } if (!Settings.web_refresh) { Settings.web_refresh = HTTP_REFRESH_TIME; }
@ -883,13 +887,14 @@ void StartWebserver(int type, IPAddress ipweb)
// call `Webserver->on()` on each entry // call `Webserver->on()` on each entry
for (uint32_t i=0; i<ARRAY_SIZE(WebServerDispatch); i++) { for (uint32_t i=0; i<ARRAY_SIZE(WebServerDispatch); i++) {
const WebServerDispatch_t & line = WebServerDispatch[i]; const WebServerDispatch_t & line = WebServerDispatch[i];
uint8_t method = pgm_read_byte(&line.method);
// copy uri in RAM and prefix with '/' // copy uri in RAM and prefix with '/'
char uri[4]; char uri[4];
uri[0] = '/'; uri[0] = '/';
strcpy_P(&uri[1], line.uri); uri[1] = pgm_read_byte(&line.uri[0]);
uri[2] = pgm_read_byte(&line.uri[1]);
uri[3] = '\0';
// register // register
Webserver->on(uri, (HTTPMethod) method, line.handler); WebServer_on(uri, line.handler, pgm_read_byte(&line.method));
} }
Webserver->onNotFound(HandleNotFound); Webserver->onNotFound(HandleNotFound);
Webserver->on("/u2", HTTP_POST, HandleUploadDone, HandleUploadLoop); // this call requires 2 functions so we keep a direct call Webserver->on("/u2", HTTP_POST, HandleUploadDone, HandleUploadLoop); // this call requires 2 functions so we keep a direct call

View File

@ -1398,7 +1398,7 @@ bool Xdrv02(uint8_t function)
WSContentSend_P(HTTP_BTN_MENU_MQTT); WSContentSend_P(HTTP_BTN_MENU_MQTT);
break; break;
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/" WEB_HANDLE_MQTT, HandleMqttConfiguration); WebServer_on(PSTR("/" WEB_HANDLE_MQTT), HandleMqttConfiguration);
break; break;
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
case FUNC_COMMAND: case FUNC_COMMAND:

View File

@ -638,7 +638,7 @@ bool Xdrv07(uint8_t function) {
WSContentSend_P(HTTP_BTN_MENU_DOMOTICZ); WSContentSend_P(HTTP_BTN_MENU_DOMOTICZ);
break; break;
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/" WEB_HANDLE_DOMOTICZ, HandleDomoticzConfiguration); WebServer_on(PSTR("/" WEB_HANDLE_DOMOTICZ), HandleDomoticzConfiguration);
break; break;
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
case FUNC_MQTT_SUBSCRIBE: case FUNC_MQTT_SUBSCRIBE:

View File

@ -928,7 +928,7 @@ bool Xdrv09(uint8_t function)
#endif // USE_RULES #endif // USE_RULES
break; break;
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/" WEB_HANDLE_TIMER, HandleTimerConfiguration); WebServer_on(PSTR("/" WEB_HANDLE_TIMER), HandleTimerConfiguration);
break; break;
#endif // USE_TIMERS_WEB #endif // USE_TIMERS_WEB
#endif // USE_WEBSERVER #endif // USE_WEBSERVER

View File

@ -1271,7 +1271,7 @@ bool Xdrv11(uint8_t function)
WSContentSend_P(HTTP_BTN_MENU_KNX); WSContentSend_P(HTTP_BTN_MENU_KNX);
break; break;
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/kn", HandleKNXConfiguration); WebServer_on(PSTR("/kn"), HandleKNXConfiguration);
break; break;
#endif // USE_KNX_WEB_MENU #endif // USE_KNX_WEB_MENU
#endif // USE_WEBSERVER #endif // USE_WEBSERVER

View File

@ -897,7 +897,7 @@ bool Xdrv20(uint8_t function)
#endif #endif
switch (function) { switch (function) {
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on(F("/description.xml"), HandleUpnpSetupHue); WebServer_on(PSTR("/description.xml"), HandleUpnpSetupHue);
break; break;
} }
} }

View File

@ -353,10 +353,10 @@ bool Xdrv21(uint8_t function)
if (devices_present && (EMUL_WEMO == Settings.flag2.emulation)) { if (devices_present && (EMUL_WEMO == Settings.flag2.emulation)) {
switch (function) { switch (function) {
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on(F("/upnp/control/basicevent1"), HTTP_POST, HandleUpnpEvent); WebServer_on(PSTR("/upnp/control/basicevent1"), HandleUpnpEvent, HTTP_POST);
Webserver->on(F("/eventservice.xml"), HandleUpnpService); WebServer_on(PSTR("/eventservice.xml"), HandleUpnpService);
Webserver->on(F("/metainfoservice.xml"), HandleUpnpMetaService); WebServer_on(PSTR("/metainfoservice.xml"), HandleUpnpMetaService);
Webserver->on(F("/setup.xml"), HandleUpnpSetupWemo); WebServer_on(PSTR("/setup.xml"), HandleUpnpSetupWemo);
break; break;
} }
} }

View File

@ -1848,7 +1848,7 @@ bool Xdrv23(uint8_t function)
#ifdef USE_ZIGBEE_EZSP #ifdef USE_ZIGBEE_EZSP
// GUI xmodem // GUI xmodem
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/" WEB_HANDLE_ZIGBEE_XFER, HandleZigbeeXfer); WebServer_on(PSTR("/" WEB_HANDLE_ZIGBEE_XFER), HandleZigbeeXfer);
break; break;
#endif // USE_ZIGBEE_EZSP #endif // USE_ZIGBEE_EZSP
#endif // USE_WEBSERVER #endif // USE_WEBSERVER

View File

@ -248,7 +248,7 @@ bool Xdrv28(uint8_t function)
WSContentSend_P(HTTP_BTN_MENU_PCF8574); WSContentSend_P(HTTP_BTN_MENU_PCF8574);
break; break;
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/" WEB_HANDLE_PCF8574, HandlePcf8574); WebServer_on(PSTR("/" WEB_HANDLE_PCF8574), HandlePcf8574);
break; break;
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
} }

View File

@ -611,7 +611,7 @@ bool Xdrv43(uint8_t function)
WSContentSend_P(HTTP_BTN_MENU_MLX90640); WSContentSend_P(HTTP_BTN_MENU_MLX90640);
break; break;
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/mlx", MLX90640HandleWebGui); WebServer_on(PSTR("/mlx"), MLX90640HandleWebGui);
break; break;
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
case FUNC_COMMAND: case FUNC_COMMAND:

View File

@ -814,10 +814,10 @@ uint32_t WcSetStreamserver(uint32_t flag) {
if (flag) { if (flag) {
if (!CamServer) { if (!CamServer) {
CamServer = new ESP8266WebServer(81); CamServer = new ESP8266WebServer(81);
CamServer->on("/", HandleWebcamRoot); WebServer_on(PSTR("/"), HandleWebcamRoot);
CamServer->on("/cam.mjpeg", HandleWebcamMjpeg); WebServer_on(PSTR("/cam.mjpeg"), HandleWebcamMjpeg);
CamServer->on("/cam.jpg", HandleWebcamMjpeg); WebServer_on(PSTR("/cam.jpg"), HandleWebcamMjpeg);
CamServer->on("/stream", HandleWebcamMjpeg); WebServer_on(PSTR("/stream"), HandleWebcamMjpeg);
AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Stream init")); AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Stream init"));
CamServer->begin(); CamServer->begin();
} }
@ -896,9 +896,9 @@ void WcLoop(void) {
} }
void WcPicSetup(void) { void WcPicSetup(void) {
Webserver->on("/wc.jpg", HandleImage); WebServer_on(PSTR("/wc.jpg"), HandleImage);
Webserver->on("/wc.mjpeg", HandleImage); WebServer_on(PSTR("/wc.mjpeg"), HandleImage);
Webserver->on("/snapshot.jpg", HandleImageBasic); WebServer_on(PSTR("/snapshot.jpg"), HandleImage);
} }
void WcShowStream(void) { void WcShowStream(void) {

View File

@ -593,7 +593,7 @@ bool Xsns34(uint8_t function)
WSContentSend_P(HTTP_BTN_MENU_HX711); WSContentSend_P(HTTP_BTN_MENU_HX711);
break; break;
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/" WEB_HANDLE_HX711, HandleHxAction); WebServer_on(PSTR("/" WEB_HANDLE_HX711), HandleHxAction);
break; break;
#endif // USE_HX711_GUI #endif // USE_HX711_GUI
#endif // USE_WEBSERVER #endif // USE_WEBSERVER

View File

@ -912,7 +912,7 @@ bool Xsns60(uint8_t function)
break; break;
#ifdef USE_FLOG #ifdef USE_FLOG
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/UBX", UBXsendFile); WebServer_on(PSTR("/UBX"), UBXsendFile);
break; break;
#endif //USE_FLOG #endif //USE_FLOG
case FUNC_JSON_APPEND: case FUNC_JSON_APPEND:

View File

@ -102,7 +102,7 @@ bool Xsns75(uint8_t function)
switch (function) { switch (function) {
case FUNC_WEB_ADD_HANDLER: case FUNC_WEB_ADD_HANDLER:
Webserver->on("/metrics", HandleMetrics); WebServer_on(PSTR("/metrics"), HandleMetrics);
break; break;
} }
return result; return result;