Skip to content

Commit 15c949e

Browse files
committed
Reduce copy of Strings in WebServer RequestHandler
1 parent 9e60bbe commit 15c949e

File tree

3 files changed

+28
-27
lines changed

3 files changed

+28
-27
lines changed

libraries/WebServer/examples/WebServer/WebServer.ino

+4-4
Original file line numberDiff line numberDiff line change
@@ -146,16 +146,16 @@ public:
146146
// @param requestMethod method of the http request line.
147147
// @param requestUri request resource from the http request line.
148148
// @return true when method can be handled.
149-
bool canHandle(WebServer &server, HTTPMethod requestMethod, String uri) override {
149+
bool canHandle(WebServer &server, HTTPMethod requestMethod, const String& uri) override {
150150
return ((requestMethod == HTTP_POST) || (requestMethod == HTTP_DELETE));
151151
} // canHandle()
152152

153-
bool canUpload(WebServer &server, String uri) override {
153+
bool canUpload(WebServer &server, const String& uri) override {
154154
// only allow upload on root fs level.
155155
return (uri == "/");
156156
} // canUpload()
157157

158-
bool handle(WebServer &server, HTTPMethod requestMethod, String requestUri) override {
158+
bool handle(WebServer &server, HTTPMethod requestMethod, const String& requestUri) override {
159159
// ensure that filename starts with '/'
160160
String fName = requestUri;
161161
if (!fName.startsWith("/")) {
@@ -177,7 +177,7 @@ public:
177177
} // handle()
178178

179179
// uploading process
180-
void upload(WebServer UNUSED &server, String requestUri, HTTPUpload &upload) override {
180+
void upload(WebServer UNUSED &server, const String& requestUri, HTTPUpload &upload) override {
181181
// ensure that filename starts with '/'
182182
static size_t uploadSize;
183183

libraries/WebServer/src/detail/RequestHandler.h

+9-9
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ class RequestHandler {
1212
note: old handler API for backward compatibility
1313
*/
1414

15-
virtual bool canHandle(HTTPMethod method, String uri) {
15+
virtual bool canHandle(HTTPMethod method, const String& uri) {
1616
(void)method;
1717
(void)uri;
1818
return false;
1919
}
20-
virtual bool canUpload(String uri) {
20+
virtual bool canUpload(const String& uri) {
2121
(void)uri;
2222
return false;
2323
}
24-
virtual bool canRaw(String uri) {
24+
virtual bool canRaw(const String& uri) {
2525
(void)uri;
2626
return false;
2727
}
@@ -30,34 +30,34 @@ class RequestHandler {
3030
note: new handler API with support for filters etc.
3131
*/
3232

33-
virtual bool canHandle(WebServer &server, HTTPMethod method, String uri) {
33+
virtual bool canHandle(WebServer &server, HTTPMethod method, const String& uri) {
3434
(void)server;
3535
(void)method;
3636
(void)uri;
3737
return false;
3838
}
39-
virtual bool canUpload(WebServer &server, String uri) {
39+
virtual bool canUpload(WebServer &server, const String& uri) {
4040
(void)server;
4141
(void)uri;
4242
return false;
4343
}
44-
virtual bool canRaw(WebServer &server, String uri) {
44+
virtual bool canRaw(WebServer &server, const String& uri) {
4545
(void)server;
4646
(void)uri;
4747
return false;
4848
}
49-
virtual bool handle(WebServer &server, HTTPMethod requestMethod, String requestUri) {
49+
virtual bool handle(WebServer &server, HTTPMethod requestMethod, const String& requestUri) {
5050
(void)server;
5151
(void)requestMethod;
5252
(void)requestUri;
5353
return false;
5454
}
55-
virtual void upload(WebServer &server, String requestUri, HTTPUpload &upload) {
55+
virtual void upload(WebServer &server, const String& requestUri, HTTPUpload &upload) {
5656
(void)server;
5757
(void)requestUri;
5858
(void)upload;
5959
}
60-
virtual void raw(WebServer &server, String requestUri, HTTPRaw &raw) {
60+
virtual void raw(WebServer &server, const String& requestUri, HTTPRaw &raw) {
6161
(void)server;
6262
(void)requestUri;
6363
(void)raw;

libraries/WebServer/src/detail/RequestHandlersImpl.h

+15-14
Original file line numberDiff line numberDiff line change
@@ -21,55 +21,55 @@ class FunctionRequestHandler : public RequestHandler {
2121
delete _uri;
2222
}
2323

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

2929
return _uri->canHandle(requestUri, pathArgs);
3030
}
3131

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

3737
return true;
3838
}
3939

40-
bool canRaw(String requestUri) override {
40+
bool canRaw(const String& requestUri) override {
4141
if (!_ufn || _method == HTTP_GET) {
4242
return false;
4343
}
4444

4545
return true;
4646
}
4747

48-
bool canHandle(WebServer &server, HTTPMethod requestMethod, String requestUri) override {
48+
bool canHandle(WebServer &server, HTTPMethod requestMethod, const String& requestUri) override {
4949
if (_method != HTTP_ANY && _method != requestMethod) {
5050
return false;
5151
}
5252

5353
return _uri->canHandle(requestUri, pathArgs) && (_filter != NULL ? _filter(server) : true);
5454
}
5555

56-
bool canUpload(WebServer &server, String requestUri) override {
56+
bool canUpload(WebServer &server, const String& requestUri) override {
5757
if (!_ufn || !canHandle(server, HTTP_POST, requestUri)) {
5858
return false;
5959
}
6060

6161
return true;
6262
}
6363

64-
bool canRaw(WebServer &server, String requestUri) override {
64+
bool canRaw(WebServer &server, const String& requestUri) override {
6565
if (!_ufn || _method == HTTP_GET || (_filter != NULL ? _filter(server) == false : false)) {
6666
return false;
6767
}
6868

6969
return true;
7070
}
7171

72-
bool handle(WebServer &server, HTTPMethod requestMethod, String requestUri) override {
72+
bool handle(WebServer &server, HTTPMethod requestMethod, const String& requestUri) override {
7373
if (!canHandle(server, requestMethod, requestUri)) {
7474
return false;
7575
}
@@ -78,14 +78,14 @@ class FunctionRequestHandler : public RequestHandler {
7878
return true;
7979
}
8080

81-
void upload(WebServer &server, String requestUri, HTTPUpload &upload) override {
81+
void upload(WebServer &server, const String& requestUri, HTTPUpload &upload) override {
8282
(void)upload;
8383
if (canUpload(server, requestUri)) {
8484
_ufn();
8585
}
8686
}
8787

88-
void raw(WebServer &server, String requestUri, HTTPRaw &raw) override {
88+
void raw(WebServer &server, const String& requestUri, HTTPRaw &raw) override {
8989
(void)raw;
9090
if (canRaw(server, requestUri)) {
9191
_ufn();
@@ -118,7 +118,7 @@ class StaticRequestHandler : public RequestHandler {
118118
_baseUriLength = _uri.length();
119119
}
120120

121-
bool canHandle(HTTPMethod requestMethod, String requestUri) override {
121+
bool canHandle(HTTPMethod requestMethod, const String& requestUri) override {
122122
if (requestMethod != HTTP_GET) {
123123
return false;
124124
}
@@ -130,7 +130,7 @@ class StaticRequestHandler : public RequestHandler {
130130
return true;
131131
}
132132

133-
bool canHandle(WebServer &server, HTTPMethod requestMethod, String requestUri) override {
133+
bool canHandle(WebServer &server, HTTPMethod requestMethod, const String& requestUri) override {
134134
if (requestMethod != HTTP_GET) {
135135
return false;
136136
}
@@ -146,21 +146,20 @@ class StaticRequestHandler : public RequestHandler {
146146
return true;
147147
}
148148

149-
bool handle(WebServer &server, HTTPMethod requestMethod, String requestUri) override {
149+
bool handle(WebServer &server, HTTPMethod requestMethod, const String& requestUri) override {
150150
if (!canHandle(server, requestMethod, requestUri)) {
151151
return false;
152152
}
153153

154154
log_v("StaticRequestHandler::handle: request=%s _uri=%s\r\n", requestUri.c_str(), _uri.c_str());
155155

156156
String path(_path);
157-
String eTagCode;
158157

159158
if (!_isFile) {
160159
// Base URI doesn't point to a file.
161160
// If a directory is requested, look for index file.
162161
if (requestUri.endsWith("/")) {
163-
requestUri += "index.htm";
162+
return handle(server, requestMethod, String(requestUri + "index.htm"));
164163
}
165164

166165
// Append whatever follows this URI in request to get the file path.
@@ -184,6 +183,8 @@ class StaticRequestHandler : public RequestHandler {
184183
return false;
185184
}
186185

186+
String eTagCode;
187+
187188
if (server._eTagEnabled) {
188189
if (server._eTagFunction) {
189190
eTagCode = (server._eTagFunction)(_fs, path);

0 commit comments

Comments
 (0)