Skip to content

Commit 83158af

Browse files
authored
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.
1 parent df9bc38 commit 83158af

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

Diff for: libraries/ESP8266WebServer/src/detail/RequestHandler.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ class RequestHandler {
1010
using WebServerType = ESP8266WebServerTemplate<ServerType>;
1111
public:
1212
virtual ~RequestHandler() { }
13-
virtual bool canHandle(HTTPMethod method, String uri) { (void) method; (void) uri; return false; }
14-
virtual bool canUpload(String uri) { (void) uri; return false; }
15-
virtual bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; }
16-
virtual void upload(WebServerType& server, String requestUri, HTTPUpload& upload) { (void) server; (void) requestUri; (void) upload; }
13+
virtual bool canHandle(HTTPMethod method, const String& uri) { (void) method; (void) uri; return false; }
14+
virtual bool canUpload(const String& uri) { (void) uri; return false; }
15+
virtual bool handle(WebServerType& server, HTTPMethod requestMethod, const String& requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; }
16+
virtual void upload(WebServerType& server, const String& requestUri, HTTPUpload& upload) { (void) server; (void) requestUri; (void) upload; }
1717

1818
RequestHandler<ServerType>* next() { return _next; }
1919
void next(RequestHandler<ServerType>* r) { _next = r; }

Diff for: libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h

+8-6
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,21 @@ class FunctionRequestHandler : public RequestHandler<ServerType> {
2525
delete _uri;
2626
}
2727

28-
bool canHandle(HTTPMethod requestMethod, String requestUri) override {
28+
bool canHandle(HTTPMethod requestMethod, const String& requestUri) override {
2929
if (_method != HTTP_ANY && _method != requestMethod)
3030
return false;
3131

3232
return _uri->canHandle(requestUri, RequestHandler<ServerType>::pathArgs);
3333
}
3434

35-
bool canUpload(String requestUri) override {
35+
bool canUpload(const String& requestUri) override {
3636
if (!_ufn || !canHandle(HTTP_POST, requestUri))
3737
return false;
3838

3939
return true;
4040
}
4141

42-
bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) override {
42+
bool handle(WebServerType& server, HTTPMethod requestMethod, const String& requestUri) override {
4343
(void) server;
4444
if (!canHandle(requestMethod, requestUri))
4545
return false;
@@ -48,7 +48,7 @@ class FunctionRequestHandler : public RequestHandler<ServerType> {
4848
return true;
4949
}
5050

51-
void upload(WebServerType& server, String requestUri, HTTPUpload& upload) override {
51+
void upload(WebServerType& server, const String& requestUri, HTTPUpload& upload) override {
5252
(void) server;
5353
(void) upload;
5454
if (canUpload(requestUri))
@@ -85,7 +85,7 @@ class StaticRequestHandler : public RequestHandler<ServerType> {
8585
_baseUriLength = _uri.length();
8686
}
8787

88-
bool canHandle(HTTPMethod requestMethod, String requestUri) override {
88+
bool canHandle(HTTPMethod requestMethod, const String& requestUri) override {
8989
if ((requestMethod != HTTP_GET) && (requestMethod != HTTP_HEAD))
9090
return false;
9191

@@ -95,7 +95,9 @@ class StaticRequestHandler : public RequestHandler<ServerType> {
9595
return true;
9696
}
9797

98-
bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) override {
98+
bool handle(WebServerType& server, HTTPMethod requestMethod, const String& __requestUri) override {
99+
String requestUri(__requestUri);
100+
99101
if (!canHandle(requestMethod, requestUri))
100102
return false;
101103

0 commit comments

Comments
 (0)