Skip to content

Commit ba807e3

Browse files
committed
Start removing alot of string stuff
1 parent 93ea506 commit ba807e3

File tree

7 files changed

+196
-428
lines changed

7 files changed

+196
-428
lines changed

include/external/AsyncWebServer/AsyncWebSocket.h

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -227,19 +227,13 @@ class AsyncWebSocketClient {
227227

228228
size_t printf(const char* format, ...) __attribute__((format(printf, 2, 3)));
229229
void text(const char* message, size_t len);
230-
void text(const char* message);
231230
void text(uint8_t* message, size_t len);
232-
void text(char* message);
233-
void text(const String& message);
234-
void text(const __FlashStringHelper* data);
231+
void text(std::string_view message);
235232
void text(AsyncWebSocketMessageBuffer* buffer);
236233

237234
void binary(const char* message, size_t len);
238-
void binary(const char* message);
239235
void binary(uint8_t* message, size_t len);
240-
void binary(char* message);
241-
void binary(const String& message);
242-
void binary(const __FlashStringHelper* data, size_t len);
236+
void binary(std::string_view message);
243237
void binary(AsyncWebSocketMessageBuffer* buffer);
244238

245239
bool canSend() { return _messageQueue.length() < WS_MAX_QUEUED_MESSAGES; }
@@ -261,7 +255,7 @@ class AsyncWebSocket : public AsyncWebHandler {
261255
typedef LinkedList<AsyncWebSocketClient*> AsyncWebSocketClientLinkedList;
262256

263257
private:
264-
String _url;
258+
std::string _url;
265259
AsyncWebSocketClientLinkedList _clients;
266260
uint32_t _cNextId;
267261
AwsEventHandler _eventHandler;
@@ -270,7 +264,7 @@ class AsyncWebSocket : public AsyncWebHandler {
270264
SemaphoreHandle_t _buffersLock;
271265

272266
public:
273-
AsyncWebSocket(const String& url);
267+
AsyncWebSocket(std::string_view url);
274268
~AsyncWebSocket();
275269
const char* url() const { return _url.c_str(); }
276270
void enable(bool e) { _enabled = e; }
@@ -290,33 +284,21 @@ class AsyncWebSocket : public AsyncWebHandler {
290284
void pingAll(uint8_t* data = NULL, size_t len = 0); // done
291285

292286
void text(uint32_t id, const char* message, size_t len);
293-
void text(uint32_t id, const char* message);
294287
void text(uint32_t id, uint8_t* message, size_t len);
295-
void text(uint32_t id, char* message);
296-
void text(uint32_t id, const String& message);
297-
void text(uint32_t id, const __FlashStringHelper* message);
288+
void text(uint32_t id, std::string_view message);
298289

299290
void textAll(const char* message, size_t len);
300-
void textAll(const char* message);
301291
void textAll(uint8_t* message, size_t len);
302-
void textAll(char* message);
303-
void textAll(const String& message);
304-
void textAll(const __FlashStringHelper* message); // need to convert
292+
void textAll(std::string_view message);
305293
void textAll(AsyncWebSocketMessageBuffer* buffer);
306294

307295
void binary(uint32_t id, const char* message, size_t len);
308-
void binary(uint32_t id, const char* message);
309296
void binary(uint32_t id, uint8_t* message, size_t len);
310-
void binary(uint32_t id, char* message);
311-
void binary(uint32_t id, const String& message);
312-
void binary(uint32_t id, const __FlashStringHelper* message, size_t len);
297+
void binary(uint32_t id, std::string_view message);
313298

314299
void binaryAll(const char* message, size_t len);
315-
void binaryAll(const char* message);
316300
void binaryAll(uint8_t* message, size_t len);
317-
void binaryAll(char* message);
318-
void binaryAll(const String& message);
319-
void binaryAll(const __FlashStringHelper* message, size_t len);
301+
void binaryAll(std::string_view message);
320302
void binaryAll(AsyncWebSocketMessageBuffer* buffer);
321303

322304
void message(uint32_t id, AsyncWebSocketMessage* message);
@@ -352,7 +334,7 @@ class AsyncWebSocketResponse : public AsyncWebServerResponse {
352334
AsyncWebSocket* _server;
353335

354336
public:
355-
AsyncWebSocketResponse(const String& key, AsyncWebSocket* server);
337+
AsyncWebSocketResponse(std::string_view key, AsyncWebSocket* server);
356338
void _respond(AsyncWebServerRequest* request);
357339
size_t _ack(AsyncWebServerRequest* request, size_t len, uint32_t time);
358340
bool _sourceValid() const { return true; }

include/external/AsyncWebServer/ESPAsyncWebServer.h

Lines changed: 88 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,14 @@
2727
#include <functional>
2828

2929
#include "LinkedList.h"
30+
#include "util/StringUtils.h"
3031

3132
#include <external/AsyncTCP.h>
3233
#include <WiFi.h>
3334

35+
#include <string>
36+
#include <string_view>
37+
3438
#ifdef ASYNCWEBSERVER_REGEX
3539
#define ASYNCWEBSERVER_REGEX_ATTRIBUTE
3640
#else
@@ -74,23 +78,23 @@ typedef std::function<void(void)> ArDisconnectHandler;
7478

7579
class AsyncWebParameter {
7680
private:
77-
String _name;
78-
String _value;
81+
std::string _name;
82+
std::string _value;
7983
size_t _size;
8084
bool _isForm;
8185
bool _isFile;
8286

8387
public:
84-
AsyncWebParameter(const String& name, const String& value, bool form = false, bool file = false, size_t size = 0)
88+
AsyncWebParameter(std::string_view name, std::string_view value, bool form = false, bool file = false, size_t size = 0)
8589
: _name(name)
8690
, _value(value)
8791
, _size(size)
8892
, _isForm(form)
8993
, _isFile(file)
9094
{
9195
}
92-
const String& name() const { return _name; }
93-
const String& value() const { return _value; }
96+
const std::string& name() const { return _name; }
97+
const std::string& value() const { return _value; }
9498
size_t size() const { return _size; }
9599
bool isPost() const { return _isForm; }
96100
bool isFile() const { return _isFile; }
@@ -102,29 +106,31 @@ class AsyncWebParameter {
102106

103107
class AsyncWebHeader {
104108
private:
105-
String _name;
106-
String _value;
109+
std::string _name;
110+
std::string _value;
107111

108112
public:
109-
AsyncWebHeader(const String& name, const String& value)
113+
AsyncWebHeader(std::string_view name, std::string_view value)
110114
: _name(name)
111115
, _value(value)
112116
{
113117
}
114-
AsyncWebHeader(const String& data)
118+
AsyncWebHeader(std::string_view data)
115119
: _name()
116120
, _value()
117121
{
118-
if (!data) return;
119-
int index = data.indexOf(':');
120-
if (index < 0) return;
121-
_name = data.substring(0, index);
122-
_value = data.substring(index + 2);
122+
if (data.empty()) return;
123+
124+
auto index = data.find(':');
125+
if (index == std::string_view::npos) return;
126+
127+
_name = data.substr(0, index);
128+
_value = OpenShock::StringTrim(data.substr(index));
123129
}
124130
~AsyncWebHeader() { }
125-
const String& name() const { return _name; }
126-
const String& value() const { return _value; }
127-
String toString() const { return String(_name + ": " + _value + "\r\n"); }
131+
const std::string& name() const { return _name; }
132+
const std::string& value() const { return _value; }
133+
std::string toString() const { return std::string(_name + ": " + _value + "\r\n"); }
128134
};
129135

130136
/*
@@ -155,16 +161,16 @@ class AsyncWebServerRequest {
155161
AsyncWebServerResponse* _response;
156162
ArDisconnectHandler _onDisconnectfn;
157163

158-
String _temp;
164+
std::string _temp;
159165
uint8_t _parseState;
160166

161167
uint8_t _version;
162168
WebRequestMethodComposite _method;
163-
String _url;
164-
String _host;
165-
String _contentType;
166-
String _boundary;
167-
String _authorization;
169+
std::string _url;
170+
std::string _host;
171+
std::string _contentType;
172+
std::string _boundary;
173+
std::string _authorization;
168174
RequestedConnectionType _reqconntype;
169175
bool _isDigest;
170176
bool _isMultipart;
@@ -175,16 +181,16 @@ class AsyncWebServerRequest {
175181

176182
LinkedList<AsyncWebHeader*> _headers;
177183
LinkedList<AsyncWebParameter*> _params;
178-
LinkedList<String*> _pathParams;
184+
LinkedList<std::string*> _pathParams;
179185

180186
uint8_t _multiParseState;
181187
uint8_t _boundaryPosition;
182188
size_t _itemStartIndex;
183189
size_t _itemSize;
184-
String _itemName;
185-
String _itemFilename;
186-
String _itemType;
187-
String _itemValue;
190+
std::string _itemName;
191+
std::string _itemFilename;
192+
std::string _itemType;
193+
std::string _itemValue;
188194
uint8_t* _itemBuffer;
189195
size_t _itemBufferIndex;
190196
bool _itemIsFile;
@@ -204,7 +210,7 @@ class AsyncWebServerRequest {
204210
void _parseLine();
205211
void _parsePlainPostChar(uint8_t data);
206212
void _parseMultipartPostByte(uint8_t data, bool last);
207-
void _addGetParams(const String& params);
213+
void _addGetParams(std::string_view params);
208214

209215
void _handleUploadStart();
210216
void _handleUploadByte(uint8_t data, bool last);
@@ -220,9 +226,9 @@ class AsyncWebServerRequest {
220226
AsyncClient* client() { return _client; }
221227
uint8_t version() const { return _version; }
222228
WebRequestMethodComposite method() const { return _method; }
223-
const String& url() const { return _url; }
224-
const String& host() const { return _host; }
225-
const String& contentType() const { return _contentType; }
229+
const std::string& url() const { return _url; }
230+
const std::string& host() const { return _host; }
231+
const std::string& contentType() const { return _contentType; }
226232
size_t contentLength() const { return _contentLength; }
227233
bool multipart() const { return _isMultipart; }
228234
const char* methodToString() const;
@@ -233,59 +239,52 @@ class AsyncWebServerRequest {
233239

234240
void setHandler(AsyncWebHandler* handler) { _handler = handler; }
235241

236-
void redirect(const String& url);
242+
void redirect(std::string_view url);
237243

238244
void send(AsyncWebServerResponse* response);
239-
void send(int code, const String& contentType = String(), const String& content = String());
240-
void send(FS& fs, const String& path, const String& contentType = String(), bool download = false);
241-
void send(File content, const String& path, const String& contentType = String(), bool download = false);
242-
void send(Stream& stream, const String& contentType, size_t len);
243-
void send(const String& contentType, size_t len, AwsResponseFiller callback);
244-
void sendChunked(const String& contentType, AwsResponseFiller callback);
245-
void send_P(int code, const String& contentType, const uint8_t* content, size_t len);
246-
void send_P(int code, const String& contentType, PGM_P content);
247-
248-
AsyncWebServerResponse* beginResponse(int code, const String& contentType = String(), const String& content = String());
249-
AsyncWebServerResponse* beginResponse(FS& fs, const String& path, const String& contentType = String(), bool download = false);
250-
AsyncWebServerResponse* beginResponse(File content, const String& path, const String& contentType = String(), bool download = false);
251-
AsyncWebServerResponse* beginResponse(Stream& stream, const String& contentType, size_t len);
252-
AsyncWebServerResponse* beginResponse(const String& contentType, size_t len, AwsResponseFiller callback);
253-
AsyncWebServerResponse* beginChunkedResponse(const String& contentType, AwsResponseFiller callback);
254-
AsyncResponseStream* beginResponseStream(const String& contentType, size_t bufferSize = 1460);
255-
AsyncWebServerResponse* beginResponse_P(int code, const String& contentType, const uint8_t* content, size_t len);
256-
AsyncWebServerResponse* beginResponse_P(int code, const String& contentType, PGM_P content);
257-
258-
size_t headers() const; // get header count
259-
bool hasHeader(const String& name) const; // check if header exists
260-
bool hasHeader(const __FlashStringHelper* data) const; // check if header exists
261-
262-
AsyncWebHeader* getHeader(const String& name) const;
263-
AsyncWebHeader* getHeader(const __FlashStringHelper* data) const;
245+
void send(int code, std::string_view contentType = {}, std::string_view content = {});
246+
void send(FS& fs, std::string_view path, std::string_view contentType = {}, bool download = false);
247+
void send(File content, std::string_view path, std::string_view contentType = {}, bool download = false);
248+
void send(Stream& stream, std::string_view contentType, size_t len);
249+
void send(std::string_view contentType, size_t len, AwsResponseFiller callback);
250+
void sendChunked(std::string_view contentType, AwsResponseFiller callback);
251+
void send_P(int code, std::string_view contentType, const uint8_t* content, size_t len);
252+
void send_P(int code, std::string_view contentType, PGM_P content);
253+
254+
AsyncWebServerResponse* beginResponse(int code, std::string_view contentType = {}, std::string_view content = {});
255+
AsyncWebServerResponse* beginResponse(FS& fs, std::string_view path, std::string_view contentType = {}, bool download = false);
256+
AsyncWebServerResponse* beginResponse(File content, std::string_view path, std::string_view contentType = {}, bool download = false);
257+
AsyncWebServerResponse* beginResponse(Stream& stream, std::string_view contentType, size_t len);
258+
AsyncWebServerResponse* beginResponse(std::string_view contentType, size_t len, AwsResponseFiller callback);
259+
AsyncWebServerResponse* beginChunkedResponse(std::string_view contentType, AwsResponseFiller callback);
260+
AsyncResponseStream* beginResponseStream(std::string_view contentType, size_t bufferSize = 1460);
261+
AsyncWebServerResponse* beginResponse_P(int code, std::string_view contentType, const uint8_t* content, size_t len);
262+
AsyncWebServerResponse* beginResponse_P(int code, std::string_view contentType, PGM_P content);
263+
264+
size_t headers() const; // get header count
265+
bool hasHeader(std::string_view name) const; // check if header exists
266+
267+
AsyncWebHeader* getHeader(std::string_view name) const;
264268
AsyncWebHeader* getHeader(size_t num) const;
265269

266270
size_t params() const; // get arguments count
267-
bool hasParam(const String& name, bool post = false, bool file = false) const;
268-
bool hasParam(const __FlashStringHelper* data, bool post = false, bool file = false) const;
271+
bool hasParam(std::string_view name, bool post = false, bool file = false) const;
269272

270-
AsyncWebParameter* getParam(const String& name, bool post = false, bool file = false) const;
271-
AsyncWebParameter* getParam(const __FlashStringHelper* data, bool post, bool file) const;
273+
AsyncWebParameter* getParam(std::string_view name, bool post = false, bool file = false) const;
272274
AsyncWebParameter* getParam(size_t num) const;
273275

274-
size_t args() const { return params(); } // get arguments count
275-
const String& arg(const String& name) const; // get request argument value by name
276-
const String& arg(const __FlashStringHelper* data) const; // get request argument value by F(name)
277-
const String& arg(size_t i) const; // get request argument value by number
278-
const String& argName(size_t i) const; // get request argument name by number
279-
bool hasArg(const char* name) const; // check if argument exists
280-
bool hasArg(const __FlashStringHelper* data) const; // check if F(argument) exists
281-
282-
const String& ASYNCWEBSERVER_REGEX_ATTRIBUTE pathArg(size_t i) const;
283-
284-
const String& header(const char* name) const; // get request header value by name
285-
const String& header(const __FlashStringHelper* data) const; // get request header value by F(name)
286-
const String& header(size_t i) const; // get request header value by number
287-
const String& headerName(size_t i) const; // get request header name by number
288-
String urlDecode(const String& text) const;
276+
size_t args() const { return params(); } // get arguments count
277+
const std::string& arg(std::string_view name) const; // get request argument value by name
278+
const std::string& arg(size_t i) const; // get request argument value by number
279+
const std::string& argName(size_t i) const; // get request argument name by number
280+
bool hasArg(const char* name) const; // check if argument exists
281+
282+
const std::string& ASYNCWEBSERVER_REGEX_ATTRIBUTE pathArg(size_t i) const;
283+
284+
const std::string& header(const char* name) const; // get request header value by name
285+
const std::string& header(size_t i) const; // get request header value by number
286+
const std::string& headerName(size_t i) const; // get request header name by number
287+
String urlDecode(std::string_view text) const;
289288
};
290289

291290
/*
@@ -318,7 +317,12 @@ class AsyncWebHandler {
318317
virtual bool canHandle(AsyncWebServerRequest* request __attribute__((unused))) { return false; }
319318
virtual void handleRequest(AsyncWebServerRequest* request __attribute__((unused))) { }
320319
virtual void handleUpload(
321-
AsyncWebServerRequest* request __attribute__((unused)), const String& filename __attribute__((unused)), size_t index __attribute__((unused)), uint8_t* data __attribute__((unused)), size_t len __attribute__((unused)), bool final __attribute__((unused))
320+
AsyncWebServerRequest* request __attribute__((unused)),
321+
std::string_view filename __attribute__((unused)),
322+
size_t index __attribute__((unused)),
323+
uint8_t* data __attribute__((unused)),
324+
size_t len __attribute__((unused)),
325+
bool final __attribute__((unused))
322326
)
323327
{
324328
}
@@ -343,7 +347,7 @@ class AsyncWebServerResponse {
343347
protected:
344348
int _code;
345349
LinkedList<AsyncWebHeader*> _headers;
346-
String _contentType;
350+
std::string _contentType;
347351
size_t _contentLength;
348352
bool _sendContentLength;
349353
bool _chunked;
@@ -359,9 +363,9 @@ class AsyncWebServerResponse {
359363
virtual ~AsyncWebServerResponse();
360364
virtual void setCode(int code);
361365
virtual void setContentLength(size_t len);
362-
virtual void setContentType(const String& type);
363-
virtual void addHeader(const String& name, const String& value);
364-
virtual String _assembleHead(uint8_t version);
366+
virtual void setContentType(std::string_view type);
367+
virtual void addHeader(std::string_view name, std::string_view value);
368+
virtual std::string _assembleHead(uint8_t version);
365369
virtual bool _started() const;
366370
virtual bool _finished() const;
367371
virtual bool _failed() const;
@@ -375,7 +379,7 @@ class AsyncWebServerResponse {
375379
* */
376380

377381
typedef std::function<void(AsyncWebServerRequest* request)> ArRequestHandlerFunction;
378-
typedef std::function<void(AsyncWebServerRequest* request, const String& filename, size_t index, uint8_t* data, size_t len, bool final)> ArUploadHandlerFunction;
382+
typedef std::function<void(AsyncWebServerRequest* request, std::string_view filename, size_t index, uint8_t* data, size_t len, bool final)> ArUploadHandlerFunction;
379383
typedef std::function<void(AsyncWebServerRequest* request, uint8_t* data, size_t len, size_t index, size_t total)> ArBodyHandlerFunction;
380384

381385
class AsyncWebServer {
@@ -428,7 +432,7 @@ class DefaultHeaders {
428432
public:
429433
using ConstIterator = headers_t::ConstIterator;
430434

431-
void addHeader(const String& name, const String& value) { _headers.add(new AsyncWebHeader(name, value)); }
435+
void addHeader(const std::string& name, const std::string& value) { _headers.add(new AsyncWebHeader(name, value)); }
432436

433437
ConstIterator begin() const { return _headers.begin(); }
434438
ConstIterator end() const { return _headers.end(); }

0 commit comments

Comments
 (0)