From 561b7f4f869f4a3b3ac1baff3f3ffdd4b912fef7 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Wed, 2 Oct 2019 08:23:46 +0200 Subject: [PATCH] Pass String by const reference [3.0] 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 db840af2a1..54568bc35f 100644 --- a/libraries/ESP8266WebServer/src/detail/RequestHandler.h +++ b/libraries/ESP8266WebServer/src/detail/RequestHandler.h @@ -8,10 +8,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 fb7bbb84d8..a591699293 100644 --- a/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h +++ b/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h @@ -20,7 +20,7 @@ class FunctionRequestHandler : public RequestHandler { { } - bool canHandle(HTTPMethod requestMethod, String requestUri) override { + bool canHandle(HTTPMethod requestMethod, const String& requestUri) override { if (_method != HTTP_ANY && _method != requestMethod) return false; @@ -30,14 +30,14 @@ class FunctionRequestHandler : public RequestHandler { return true; } - 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; @@ -46,7 +46,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)) @@ -75,7 +75,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; @@ -85,7 +85,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;