8000 Const reference to String as method parameters to prevent additional … · me-no-dev/ESPAsyncWebServer@55ca7de · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Jan 20, 2025. It is now read-only.

Commit 55ca7de

Browse files
author
Maksym Lunin
committed
Const reference to String as method parameters to prevent additional copy and memory allocation when String passed by value
1 parent 091f0dc commit 55ca7de

14 files changed

+60
-60
lines changed

examples/ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ void setup(){
189189

190190
request->send(404);
191191
});
192-
server.onFileUpload([](AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final){
192+
server.onFileUpload([](AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final){
193193
if(!index)
194194
Serial.printf("UploadStart: %s\n", filename.c_str());
195195
Serial.printf("%s", (const char*)data);

src/AsyncEventSource.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ void AsyncEventSourceClient::send(const char *message, const char *event, uint32
160160

161161
// Handler
162162

163-
AsyncEventSource::AsyncEventSource(String url)
163+
AsyncEventSource::AsyncEventSource(const String& url)
164164
: _url(url)
165165
, _clients(LinkedList<AsyncEventSourceClient *>([](AsyncEventSourceClient *c){ delete c; }))
166166
, _connectcb(NULL)

src/AsyncEventSource.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class AsyncEventSource: public AsyncWebHandler {
5858
LinkedList<AsyncEventSourceClient *> _clients;
5959
ArEventHandlerFunction _connectcb;
6060
public:
61-
AsyncEventSource(String url);
61+
AsyncEventSource(const String& url);
6262
~AsyncEventSource();
6363

6464
const char * url() const { return _url.c_str(); }

src/AsyncWebSocket.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ uint16_t AsyncWebSocketClient::remotePort() {
579579
* Async Web Socket - Each separate socket location
580580
*/
581581

582-
AsyncWebSocket::AsyncWebSocket(String url)
582+
AsyncWebSocket::AsyncWebSocket(const String& url)
583583
:_url(url)
584584
,_clients(LinkedList<AsyncWebSocketClient *>([](AsyncWebSocketClient *c){ delete c; }))
585585
,_cNextId(1)
@@ -890,7 +890,7 @@ void AsyncWebSocket::handleRequest( A3DB AsyncWebServerRequest *request){
890890
* Authentication code from https://github.com/Links2004/arduinoWebSockets/blob/master/src/WebSockets.cpp#L480
891891
*/
892892

893-
AsyncWebSocketResponse::AsyncWebSocketResponse(String key, AsyncWebSocket *server){
893+
AsyncWebSocketResponse::AsyncWebSocketResponse(const String& key, AsyncWebSocket *server){
894894
_server = server;
895895
_code = 101;
896896
uint8_t * hash = (uint8_t*)malloc(20);

src/AsyncWebSocket.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class AsyncWebSocket: public AsyncWebHandler {
144144
AwsEventHandler _eventHandler;
145145
bool _enabled;
146146
public:
147-
AsyncWebSocket(String url);
147+
AsyncWebSocket(const String& url);
148148
~AsyncWebSocket();
149149
const char * url() const { return _url.c_str(); }
150150
void enable(bool e){ _enabled = e; }
@@ -216,7 +216,7 @@ class AsyncWebSocketResponse: public AsyncWebServerResponse {
216216
String _content;
217217
AsyncWebSocket *_server;
218218
public:
219-
AsyncWebSocketResponse(String key, AsyncWebSocket *server);
219+
AsyncWebSocketResponse(const String& key, AsyncWebSocket *server);
220220
void _respond(AsyncWebServerRequest *request);
221221
size_t _ack(AsyncWebServerRequest *request, size_t len, uint32_t time);
222222
bool _sourceValid(){ return true; }

src/ESPAsyncWebServer.h

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ class AsyncWebParameter {
7777

7878
public:
7979

80-
AsyncWebParameter(String name, String value, bool form=false, bool file=false, size_t size=0): _name(name), _value(value), _size(size), _isForm(form), _isFile(file){}
81-
String name() const { return _name; }
82-
String value() const { return _value; }
80+
AsyncWebParameter(const String& name, const String& value, bool form=false, bool file=false, size_t size=0): _name(name), _value(value), _size(size), _isForm(form), _isFile(file){}
81+
const String& name() const { return _name; }
82+
const String& value() const { return _value; }
8383
size_t size() const { return _size; }
8484
bool isPost() const { return _isForm; }
8585
bool isFile() const { return _isFile; }
@@ -95,18 +95,18 @@ class AsyncWebHeader {
9595
String _value;
9696

9797
public:
98-
AsyncWebHeader(String name, String value): _name(name), _value(value){}
99-
AsyncWebHeader(String data): _name(), _value(){
98+
AsyncWebHeader(const String& name, const String& value): _name(name), _value(value){}
99+
AsyncWebHeader(const String& data): _name(), _value(){
100100
if(!data) return;
101101
int index = data.indexOf(':');
102102
if (index < 0) return;
103103
_name = data.substring(0, index);
104104
_value = data.substring(index + 2);
105105
}
106106
~AsyncWebHeader(){}
107-
String name() const { return _name; }
108-
String value() const { return _value; }
109-
String toString() const { return String(_name+": "+_value+"\r\n"); }
107+
const String& name() const { return _name; }
108+
const String& value() const { return _value; }
109+
const String& toString() const { return String(_name+": "+_value+"\r\n"); }
110110
};
111111

112112
/*
@@ -186,9 +186,9 @@ class AsyncWebServerRequest {
186186
AsyncClient* client(){ return _client; }
187187
uint8_t version() const { return _version; }
188188
WebRequestMethodComposite method() const { return _method; }
189-
String url() const { return _url; }
190-
String host() const { return _host; }
191-
String contentType() const { return _contentType; }
189+
const String& url() const { return _url; }
190+
const String& host() const { return _host; }
191+
const String& contentType() const { return _contentType; }
192192
size_t contentLength() const { return _contentLength; }
193193
bool multipart() const { return _isMultipart; }
194194
const char * methodToString() const;
@@ -237,14 +237,14 @@ class AsyncWebServerRequest {
237237
AsyncWebParameter* getParam(size_t num) const;
238238

239239
size_t args() const { return params(); } // get arguments count
240-
String arg(const String& name) const;// get request argument value by name
241-
String arg(size_t i) const; // get request argument value by number
242-
String argName(size_t i) const; // get request argument name by number
243-
bool hasArg(const char* name) const; // check if argument exists
244-
245-
String header(const char* name) const; // get request header value by name
246-
String header(size_t i) const; // get request header value by number
247-
String headerName(size_t i) const; // get request header name by number
240+
const String& arg(const String& name) const; // get request argument value by name
241+
const String& arg(size_t i) const; // get request argument value by number
242+
const String& argName(size_t i) const; // get request argument name by number
243+
bool hasArg(const char* name) const; // check if argument exists
244+
245+
const String& header(const char* name) const;// get request header value by name
246+
const String& header(size_t i) const; // get request header value by number
247+
const String& headerName(size_t i) const; // get request header name by number
248248
String urlDecode(const String& text) const;
249249
};
250250

@@ -282,9 +282,9 @@ class AsyncWebRewrite {
282282
}
283283
AsyncWebRewrite& setFilter(ArRequestFilterFunction fn) { _filter = fn; return *this; }
284284
bool filter(AsyncWebServerRequest *request) const { return _filter == NULL || _filter(request); }
285-
String from(void) const { return _from; }
286-
String toUrl(void) const { return _toUrl; }
287-
String params(void) const { return _params; }
285+
const String& from(void) const { return _from; }
286+
const String& toUrl(void) const { return _toUrl; }
287+
const String& params(void) const { return _params; }
288288
};
289289

290290
/*
@@ -303,7 +303,7 @@ class AsyncWebHandler {
303303
return false;
304304
}
305305
virtual void handleRequest(AsyncWebServerRequest *request){}
306-
virtual void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final){}
306+
virtual void handleUpload(AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final){}
307307
virtual void handleBody(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total){}
308308
};
309309

src/SPIFFSEditor.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ const uint8_t edit_htm_gz[] PROGMEM = {
317317

318318
// WEB HANDLER IMPLEMENTATION
319319

320-
SPIFFSEditor::SPIFFSEditor(String username, String password)
320+
SPIFFSEditor::SPIFFSEditor(const String& username, const String& password)
321321
:_username(username)
322322
,_password(password)
323323
,_authenticated(false)
@@ -418,7 +418,7 @@ void SPIFFSEditor::handleRequest(AsyncWebServerRequest *request){
418418
}
419419
}
420420

421-
void SPIFFSEditor::handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final){
421+
void SPIFFSEditor::handleUpload(AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final){
422422
if(!index){
423423
if(!_username.length() || request->authenticate(_username.c_str(),_password.c_str())){
424424
_authenticated = true;

src/SPIFFSEditor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ class SPIFFSEditor: public AsyncWebHandler {
99
bool _authenticated;
1010
uint32_t _startTime;
1111
public:
12-
SPIFFSEditor(String username=String(), String password=String());
12+
SPIFFSEditor(const String& username=String(), const String& password=String());
1313
virtual bool canHandle(AsyncWebServerRequest *request) override final;
1414
virtual void handleRequest(AsyncWebServerRequest *request) override final;
15-
virtual void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) override final;
15+
virtual void handleUpload(AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final) override final;
1616
};
1717

1818
#endif

src/WebAuthentication.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ static String genRandomMD5(){
8484
return res;
8585
}
8686

87-
static String stringMD5(String in){
87+
static String stringMD5(const String& in){
8888
char * out = (char*)malloc(33);
8989
if(out == NULL || !getMD5((uint8_t*)(in.c_str()), in.length(), out))
9090
return "";

src/WebHandlerImpl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
class AsyncStaticWebHandler: public AsyncWebHandler {
2929
private:
3030
bool _getFile(AsyncWebServerRequest *request);
31-
bool _fileExists(AsyncWebServerRequest *request, const String path);
31+
bool _fileExists(AsyncWebServerRequest *request, const String& path);
3232
uint8_t _countBits(const uint8_t value) const;
3333
protected:
3434
FS _fs;
@@ -92,7 +92,7 @@ class AsyncCallbackWebHandler: public AsyncWebHandler {
9292
else
9393
request->send(500);
9494
}
95-
virtual void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) override final {
95+
virtual void handleUpload(AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final) override final {
9696
if(_onUpload)
9797
_onUpload(request, filename, index, data, len, final);
9898
}

0 commit comments

Comments
 (0)
0