Update to version 3.8.0
This commit is contained in:
@@ -5,8 +5,14 @@
|
||||
#define ASYNCWEBSOCKET_H_
|
||||
|
||||
#include <Arduino.h>
|
||||
#ifdef ESP32
|
||||
|
||||
#if defined(ESP32) || defined(LIBRETINY)
|
||||
#include <AsyncTCP.h>
|
||||
#ifdef LIBRETINY
|
||||
#ifdef round
|
||||
#undef round
|
||||
#endif
|
||||
#endif
|
||||
#include <mutex>
|
||||
#ifndef WS_MAX_QUEUED_MESSAGES
|
||||
#define WS_MAX_QUEUED_MESSAGES 32
|
||||
@@ -47,7 +53,62 @@ using AsyncWebSocketSharedBuffer = std::shared_ptr<std::vector<uint8_t>>;
|
||||
class AsyncWebSocket;
|
||||
class AsyncWebSocketResponse;
|
||||
class AsyncWebSocketClient;
|
||||
class AsyncWebSocketControl;
|
||||
|
||||
/*
|
||||
* Control Frame
|
||||
*/
|
||||
|
||||
class AsyncWebSocketControl {
|
||||
private:
|
||||
uint8_t _opcode;
|
||||
uint8_t *_data;
|
||||
size_t _len;
|
||||
bool _mask;
|
||||
bool _finished;
|
||||
|
||||
public:
|
||||
AsyncWebSocketControl(uint8_t opcode, const uint8_t *data = NULL, size_t len = 0, bool mask = false)
|
||||
: _opcode(opcode), _len(len), _mask(len && mask), _finished(false) {
|
||||
if (data == NULL) {
|
||||
_len = 0;
|
||||
}
|
||||
if (_len) {
|
||||
if (_len > 125) {
|
||||
_len = 125;
|
||||
}
|
||||
|
||||
_data = (uint8_t *)malloc(_len);
|
||||
|
||||
if (_data == NULL) {
|
||||
#ifdef ESP32
|
||||
log_e("Failed to allocate");
|
||||
#endif
|
||||
_len = 0;
|
||||
} else {
|
||||
memcpy(_data, data, len);
|
||||
}
|
||||
} else {
|
||||
_data = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
~AsyncWebSocketControl() {
|
||||
if (_data != NULL) {
|
||||
free(_data);
|
||||
}
|
||||
}
|
||||
|
||||
bool finished() const {
|
||||
return _finished;
|
||||
}
|
||||
uint8_t opcode() {
|
||||
return _opcode;
|
||||
}
|
||||
uint8_t len() {
|
||||
return _len + 2;
|
||||
}
|
||||
size_t send(AsyncClient *client);
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
/** Message type as defined by enum AwsFrameType.
|
||||
@@ -152,7 +213,7 @@ private:
|
||||
uint32_t _clientId;
|
||||
AwsClientStatus _status;
|
||||
#ifdef ESP32
|
||||
mutable std::mutex _lock;
|
||||
mutable std::recursive_mutex _lock;
|
||||
#endif
|
||||
std::deque<AsyncWebSocketControl> _controlQueue;
|
||||
std::deque<AsyncWebSocketMessage> _messageQueue;
|
||||
@@ -385,6 +446,7 @@ public:
|
||||
return _cNextId++;
|
||||
}
|
||||
AsyncWebSocketClient *_newClient(AsyncWebServerRequest *request);
|
||||
void _handleDisconnect(AsyncWebSocketClient *client);
|
||||
void _handleEvent(AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len);
|
||||
bool canHandle(AsyncWebServerRequest *request) const override final;
|
||||
void handleRequest(AsyncWebServerRequest *request) override final;
|
||||
|
||||
Reference in New Issue
Block a user