forked from me-no-dev/ESPAsyncWebServer
std::list instead of shitty self written LinkedList
This commit is contained in:
@ -863,7 +863,6 @@ AsyncWebSocket::AsyncWebSocket(const String& url)
|
|||||||
,_clients(LinkedList<AsyncWebSocketClient *>([](AsyncWebSocketClient *c){ delete c; }))
|
,_clients(LinkedList<AsyncWebSocketClient *>([](AsyncWebSocketClient *c){ delete c; }))
|
||||||
,_cNextId(1)
|
,_cNextId(1)
|
||||||
,_enabled(true)
|
,_enabled(true)
|
||||||
,_buffers(LinkedList<AsyncWebSocketMessageBuffer *>([](AsyncWebSocketMessageBuffer *b){ delete b; }))
|
|
||||||
{
|
{
|
||||||
_eventHandler = NULL;
|
_eventHandler = NULL;
|
||||||
}
|
}
|
||||||
@ -1208,21 +1207,23 @@ void AsyncWebSocket::handleRequest(AsyncWebServerRequest *request){
|
|||||||
|
|
||||||
AsyncWebSocketMessageBuffer * AsyncWebSocket::makeBuffer(size_t size)
|
AsyncWebSocketMessageBuffer * AsyncWebSocket::makeBuffer(size_t size)
|
||||||
{
|
{
|
||||||
AsyncWebSocketMessageBuffer * buffer = new AsyncWebSocketMessageBuffer(size);
|
AsyncWebSocketMessageBuffer *buffer{};
|
||||||
if (buffer) {
|
{
|
||||||
AsyncWebLockGuard l(_lock);
|
AsyncWebLockGuard l(_lock);
|
||||||
_buffers.add(buffer);
|
_buffers.emplace_back(size);
|
||||||
|
buffer = &_buffers.back();
|
||||||
}
|
}
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
AsyncWebSocketMessageBuffer * AsyncWebSocket::makeBuffer(uint8_t * data, size_t size)
|
AsyncWebSocketMessageBuffer * AsyncWebSocket::makeBuffer(uint8_t * data, size_t size)
|
||||||
{
|
{
|
||||||
AsyncWebSocketMessageBuffer * buffer = new AsyncWebSocketMessageBuffer(data, size);
|
AsyncWebSocketMessageBuffer *buffer{};
|
||||||
|
|
||||||
if (buffer) {
|
{
|
||||||
AsyncWebLockGuard l(_lock);
|
AsyncWebLockGuard l(_lock);
|
||||||
_buffers.add(buffer);
|
_buffers.emplace_back(data, size);
|
||||||
|
buffer = &_buffers.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
@ -1232,10 +1233,11 @@ void AsyncWebSocket::_cleanBuffers()
|
|||||||
{
|
{
|
||||||
AsyncWebLockGuard l(_lock);
|
AsyncWebLockGuard l(_lock);
|
||||||
|
|
||||||
for(AsyncWebSocketMessageBuffer * c: _buffers){
|
for (auto iter = std::begin(_buffers); iter != std::end(_buffers);){
|
||||||
if(c && c->canDelete()){
|
if(iter->canDelete()){
|
||||||
_buffers.remove(c);
|
iter = _buffers.erase(iter);
|
||||||
}
|
} else
|
||||||
|
iter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,8 @@
|
|||||||
|
|
||||||
#include "AsyncWebSynchronization.h"
|
#include "AsyncWebSynchronization.h"
|
||||||
|
|
||||||
|
#include <list>
|
||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
#include <Hash.h>
|
#include <Hash.h>
|
||||||
#ifdef CRYPTO_HASH_h // include Hash.h from espressif framework if the first include was from the crypto library
|
#ifdef CRYPTO_HASH_h // include Hash.h from espressif framework if the first include was from the crypto library
|
||||||
@ -328,7 +330,7 @@ class AsyncWebSocket: public AsyncWebHandler {
|
|||||||
// messagebuffer functions/objects.
|
// messagebuffer functions/objects.
|
||||||
AsyncWebSocketMessageBuffer * makeBuffer(size_t size = 0);
|
AsyncWebSocketMessageBuffer * makeBuffer(size_t size = 0);
|
||||||
AsyncWebSocketMessageBuffer * makeBuffer(uint8_t * data, size_t size);
|
AsyncWebSocketMessageBuffer * makeBuffer(uint8_t * data, size_t size);
|
||||||
LinkedList<AsyncWebSocketMessageBuffer *> _buffers;
|
std::list<AsyncWebSocketMessageBuffer> _buffers;
|
||||||
void _cleanBuffers();
|
void _cleanBuffers();
|
||||||
|
|
||||||
AsyncWebSocketClientLinkedList getClients() const;
|
AsyncWebSocketClientLinkedList getClients() const;
|
||||||
|
Reference in New Issue
Block a user