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 {
protected:
int _code;
LinkedList<AsyncWebHeader *> _headers;
std::list<AsyncWebHeader> _headers;
String _contentType;
size_t _contentLength;
bool _sendContentLength;
@@ -463,17 +463,16 @@ class AsyncWebServer {
};
class DefaultHeaders {
using headers_t = LinkedList<AsyncWebHeader *>;
using headers_t = std::list<AsyncWebHeader>;
headers_t _headers;
DefaultHeaders()
:_headers(headers_t([](AsyncWebHeader *h){ delete h; }))
{}
public:
using ConstIterator = headers_t::ConstIterator;
DefaultHeaders() = default;
using ConstIterator = headers_t::const_iterator;
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(); }
@@ -481,6 +480,7 @@ public:
DefaultHeaders(DefaultHeaders const &) = delete;
DefaultHeaders &operator=(DefaultHeaders const &) = delete;
static DefaultHeaders &Instance() {
static DefaultHeaders instance;
return instance;

View File

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