From 83158affa8336936b0d31263466268bde94a49ae Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Fri, 10 Jul 2020 13:27:51 +0200 Subject: [PATCH] Pass String by const reference [3.0] (#6583) Passing String by value means a full copy-constructor/temporary string creation which is slightly inefficient. Avoid that by using const references. --- .../ESP8266WebServer/src/detail/RequestHandler.h | 8 ++++---- .../src/detail/RequestHandlersImpl.h | 14 ++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/libraries/ESP8266WebServer/src/detail/RequestHandler.h b/libraries/ESP8266WebServer/src/detail/RequestHandler.h index 9202f623b3..174040a77f 100644 --- a/libraries/ESP8266WebServer/src/detail/RequestHandler.h +++ b/libraries/ESP8266WebServer/src/detail/RequestHandler.h @@ -10,10 +10,10 @@ class RequestHandler { using WebServerType = ESP8266WebServerTemplate; public: virtual ~RequestHandler() { } - virtual bool canHandle(HTTPMethod method, String uri) { (void) method; (void) uri; return false; } - virtual bool canUpload(String uri) { (void) uri; return false; } - virtual bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; } - virtual void upload(WebServerType& server, String requestUri, HTTPUpload& upload) { (void) server; (void) requestUri; (void) upload; } + virtual bool canHandle(HTTPMethod method, const String& uri) { (void) method; (void) uri; return false; } + virtual bool canUpload(const String& uri) { (void) uri; return false; } + virtual bool handle(WebServerType& server, HTTPMethod requestMethod, const String& requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; } + virtual void upload(WebServerType& server, const String& requestUri, HTTPUpload& upload) { (void) server; (void) requestUri; (void) upload; } RequestHandler* next() { return _next; } void next(RequestHandler* r) { _next = r; } diff --git a/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h b/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h index fb452af48c..005a522a06 100644 --- a/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h +++ b/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h @@ -25,21 +25,21 @@ class FunctionRequestHandler : public RequestHandler { delete _uri; } - bool canHandle(HTTPMethod requestMethod, String requestUri) override { + bool canHandle(HTTPMethod requestMethod, const String& requestUri) override { if (_method != HTTP_ANY && _method != requestMethod) return false; return _uri->canHandle(requestUri, RequestHandler::pathArgs); } - bool canUpload(String requestUri) override { + bool canUpload(const String& requestUri) override { if (!_ufn || !canHandle(HTTP_POST, requestUri)) return false; return true; } - bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) override { + bool handle(WebServerType& server, HTTPMethod requestMethod, const String& requestUri) override { (void) server; if (!canHandle(requestMethod, requestUri)) return false; @@ -48,7 +48,7 @@ class FunctionRequestHandler : public RequestHandler { return true; } - void upload(WebServerType& server, String requestUri, HTTPUpload& upload) override { + void upload(WebServerType& server, const String& requestUri, HTTPUpload& upload) override { (void) server; (void) upload; if (canUpload(requestUri)) @@ -85,7 +85,7 @@ class StaticRequestHandler : public RequestHandler { _baseUriLength = _uri.length(); } - bool canHandle(HTTPMethod requestMethod, String requestUri) override { + bool canHandle(HTTPMethod requestMethod, const String& requestUri) override { if ((requestMethod != HTTP_GET) && (requestMethod != HTTP_HEAD)) return false; @@ -95,7 +95,9 @@ class StaticRequestHandler : public RequestHandler { return true; } - bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) override { + bool handle(WebServerType& server, HTTPMethod requestMethod, const String& __requestUri) override { + String requestUri(__requestUri); + if (!canHandle(requestMethod, requestUri)) return false;