Skip to content

Commit 561b7f4

Browse files
committed
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.
1 parent 8a6a7f7 commit 561b7f4

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
@@ -8,10 +8,10 @@ class RequestHandler {
88
using WebServerType = ESP8266WebServerTemplate<ServerType>;
99
public:
1010
virtual ~RequestHandler() { }
11-
virtual bool canHandle(HTTPMethod method, String uri) { (void) method; (void) uri; return false; }
12-
virtual bool canUpload(String uri) { (void) uri; return false; }
13-
virtual bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; }
14-
virtual void upload(WebServerType& server, String requestUri, HTTPUpload& upload) { (void) server; (void) requestUri; (void) upload; }
11+
virtual bool canHandle(HTTPMethod method, const String& uri) { (void) method; (void) uri; return false; }
12+
virtual bool canUpload(const String& uri) { (void) uri; return false; }
13+
virtual bool handle(WebServerType& server, HTTPMethod requestMethod, const String& requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; }
14+
virtual void upload(WebServerType& server, const String& requestUri, HTTPUpload& upload) { (void) server; (void) requestUri; (void) upload; }
1515

1616
RequestHandler<ServerType>* next() { return _next; }
1717
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
@@ -20,7 +20,7 @@ class FunctionRequestHandler : public RequestHandler<ServerType> {
2020
{
2121
}
2222

23-
bool canHandle(HTTPMethod requestMethod, String requestUri) override {
23+
bool canHandle(HTTPMethod requestMethod, const String& requestUri) override {
2424
if (_method != HTTP_ANY && _method != requestMethod)
2525
return false;
2626

@@ -30,14 +30,14 @@ class FunctionRequestHandler : public RequestHandler<ServerType> {
3030
return true;
3131
}
3232

33-
bool canUpload(String requestUri) override {
33+
bool canUpload(const String& requestUri) override {
3434
if (!_ufn || !canHandle(HTTP_POST, requestUri))
3535
return false;
3636

3737
return true;
3838
}
3939

40-
bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) override {
40+
bool handle(WebServerType& server, HTTPMethod requestMethod, const String& requestUri) override {
4141
(void) server;
4242
if (!canHandle(requestMethod, requestUri))
4343
return false;
@@ -46,7 +46,7 @@ class FunctionRequestHandler : public RequestHandler<ServerType> {
4646
return true;
4747
}
4848

49-
void upload(WebServerType& server, String requestUri, HTTPUpload& upload) override {
49+
void upload(WebServerType& server, const String& requestUri, HTTPUpload& upload) override {
5050
(void) server;
5151
(void) upload;
5252
if (canUpload(requestUri))
@@ -75,7 +75,7 @@ class StaticRequestHandler : public RequestHandler<ServerType> {
7575
_baseUriLength = _uri.length();
7676
}
7777

78-
bool canHandle(HTTPMethod requestMethod, String requestUri) override {
78+
bool canHandle(HTTPMethod requestMethod, const String& requestUri) override {
7979
if ((requestMethod != HTTP_GET) && (requestMethod != HTTP_HEAD))
8080
return false;
8181

@@ -85,7 +85,9 @@ class StaticRequestHandler : public RequestHandler<ServerType> {
8585
return true;
8686
}
8787

88-
bool handle(WebServerType& server, HTTPMethod requestMethod, String requestUri) override {
88+
bool handle(WebServerType& server, HTTPMethod requestMethod, const String& __requestUri) override {
89+
String requestUri(__requestUri);
90+
8991
if (!canHandle(requestMethod, requestUri))
9092
return false;
9193

0 commit comments

Comments
 (0)