Replace use of LinkedList<T> with std::list for AsyncWebServerResponse headers

Fraction of commit 8bb1c704cd70dd58b318b296154a5404a1bd27d0 of dumbfixes
branch of 0xFEEDC0DE64 fork of ESPAsyncWebServer.
This uses defaulted copy constructors for AsyncWebHeader from a previous commit.
Step three of removal of homebrewed LinkedList in favor of standard C++
containers. Also removed from DefaultHeaders class.
This commit is contained in:
Alex Villacís Lasso
2020-12-29 16:49:19 -05:00
parent 7a40df0f95
commit 7f172eabf6
2 changed files with 13 additions and 16 deletions

View File

@@ -380,7 +380,7 @@ typedef enum {
class AsyncWebServerResponse { class AsyncWebServerResponse {
protected: protected:
int _code; int _code;
LinkedList<AsyncWebHeader *> _headers; std::list<AsyncWebHeader> _headers;
String _contentType; String _contentType;
size_t _contentLength; size_t _contentLength;
bool _sendContentLength; bool _sendContentLength;
@@ -463,17 +463,16 @@ class AsyncWebServer {
}; };
class DefaultHeaders { class DefaultHeaders {
using headers_t = LinkedList<AsyncWebHeader *>; using headers_t = std::list<AsyncWebHeader>;
headers_t _headers; headers_t _headers;
DefaultHeaders()
:_headers(headers_t([](AsyncWebHeader *h){ delete h; }))
{}
public: public:
using ConstIterator = headers_t::ConstIterator; DefaultHeaders() = default;
using ConstIterator = headers_t::const_iterator;
void addHeader(const String& name, const String& value){ void addHeader(const String& name, const String& value){
_headers.add(new AsyncWebHeader(name, value)); _headers.emplace_back(name, value);
} }
ConstIterator begin() const { return _headers.begin(); } ConstIterator begin() const { return _headers.begin(); }
@@ -481,6 +480,7 @@ public:
DefaultHeaders(DefaultHeaders const &) = delete; DefaultHeaders(DefaultHeaders const &) = delete;
DefaultHeaders &operator=(DefaultHeaders const &) = delete; DefaultHeaders &operator=(DefaultHeaders const &) = delete;
static DefaultHeaders &Instance() { static DefaultHeaders &Instance() {
static DefaultHeaders instance; static DefaultHeaders instance;
return instance; return instance;

View File

@@ -88,7 +88,6 @@ const __FlashStringHelper *AsyncWebServerResponse::responseCodeToString(int code
AsyncWebServerResponse::AsyncWebServerResponse() AsyncWebServerResponse::AsyncWebServerResponse()
: _code(0) : _code(0)
, _headers(LinkedList<AsyncWebHeader *>([](AsyncWebHeader *h){ delete h; }))
, _contentType() , _contentType()
, _contentLength(0) , _contentLength(0)
, _sendContentLength(true) , _sendContentLength(true)
@@ -99,14 +98,12 @@ AsyncWebServerResponse::AsyncWebServerResponse()
, _writtenLength(0) , _writtenLength(0)
, _state(RESPONSE_SETUP) , _state(RESPONSE_SETUP)
{ {
for(auto header: DefaultHeaders::Instance()) { for(const auto &header: DefaultHeaders::Instance()) {
_headers.add(new AsyncWebHeader(header->name(), header->value())); _headers.emplace_back(header);
} }
} }
AsyncWebServerResponse::~AsyncWebServerResponse(){ AsyncWebServerResponse::~AsyncWebServerResponse() = default;
_headers.free();
}
void AsyncWebServerResponse::setCode(int code){ void AsyncWebServerResponse::setCode(int code){
if(_state == RESPONSE_SETUP) if(_state == RESPONSE_SETUP)
@@ -124,7 +121,7 @@ void AsyncWebServerResponse::setContentType(const String& type){
} }
void AsyncWebServerResponse::addHeader(const String& name, const String& value){ void AsyncWebServerResponse::addHeader(const String& name, const String& value){
_headers.add(new AsyncWebHeader(name, value)); _headers.emplace_back(name, value);
} }
String AsyncWebServerResponse::_assembleHead(uint8_t version){ String AsyncWebServerResponse::_assembleHead(uint8_t version){
@@ -150,10 +147,10 @@ String AsyncWebServerResponse::_assembleHead(uint8_t version){
} }
for(const auto& header: _headers){ for(const auto& header: _headers){
snprintf_P(buf, bufSize, PSTR("%s: %s\r\n"), header->name().c_str(), header->value().c_str()); snprintf_P(buf, bufSize, PSTR("%s: %s\r\n"), header.name().c_str(), header.value().c_str());
out.concat(buf); out.concat(buf);
} }
_headers.free(); _headers.clear();
out.concat(F("\r\n")); out.concat(F("\r\n"));
_headLength = out.length(); _headLength = out.length();