Made sure all flavors of AsyncWebSocket binary(), text(), binaryAll() and textAll() are implemented

This commit is contained in:
Mathieu Carbou
2024-05-31 23:41:17 +02:00
parent c73725fb0d
commit b8a7b5362a
2 changed files with 47 additions and 21 deletions

View File

@@ -954,21 +954,19 @@ void AsyncWebSocket::text(uint32_t id, const __FlashStringHelper *data)
free(message);
}
}
void AsyncWebSocket::textAll(AsyncWebSocketMessageBuffer * buffer)
void AsyncWebSocket::text(uint32_t id, AsyncWebSocketMessageBuffer *buffer)
{
if (buffer) {
textAll(std::move(buffer->_buffer));
delete buffer;
text(id, std::move(buffer->_buffer));
delete buffer;
}
}
void AsyncWebSocket::textAll(std::shared_ptr<std::vector<uint8_t>> buffer)
void AsyncWebSocket::text(uint32_t id, std::shared_ptr<std::vector<uint8_t>> buffer)
{
for (auto &c : _clients)
if (c.status() == WS_CONNECTED)
c.text(buffer);
if (AsyncWebSocketClient *c = client(id))
c->text(buffer);
}
void AsyncWebSocket::textAll(const uint8_t *message, size_t len)
{
textAll(makeSharedBuffer(message, len));
@@ -1005,6 +1003,20 @@ void AsyncWebSocket::textAll(const __FlashStringHelper *data)
free(message);
}
}
void AsyncWebSocket::textAll(AsyncWebSocketMessageBuffer * buffer)
{
if (buffer) {
textAll(std::move(buffer->_buffer));
delete buffer;
}
}
void AsyncWebSocket::textAll(std::shared_ptr<std::vector<uint8_t>> buffer)
{
for (auto &c : _clients)
if (c.status() == WS_CONNECTED)
c.text(buffer);
}
void AsyncWebSocket::binary(uint32_t id, const uint8_t *message, size_t len)
{
@@ -1034,27 +1046,24 @@ void AsyncWebSocket::binary(uint32_t id, const __FlashStringHelper *data, size_t
free(message);
}
}
void AsyncWebSocket::binaryAll(AsyncWebSocketMessageBuffer * buffer)
void AsyncWebSocket::binary(uint32_t id, AsyncWebSocketMessageBuffer *buffer)
{
if (buffer) {
binaryAll(std::move(buffer->_buffer));
binary(id, std::move(buffer->_buffer));
delete buffer;
}
}
void AsyncWebSocket::binaryAll(std::shared_ptr<std::vector<uint8_t>> buffer)
void AsyncWebSocket::binary(uint32_t id, std::shared_ptr<std::vector<uint8_t>> buffer)
{
for (auto &c : _clients)
if (c.status() == WS_CONNECTED)
c.binary(buffer);
if (AsyncWebSocketClient *c = client(id))
c->binary(buffer);
}
void AsyncWebSocket::binaryAll(const uint8_t *message, size_t len)
{
binaryAll(makeSharedBuffer(message, len));
}
void AsyncWebSocket::binaryAll(const char *message, size_t len)
{
binaryAll((const uint8_t *)message, len);
@@ -1078,6 +1087,19 @@ void AsyncWebSocket::binaryAll(const __FlashStringHelper *data, size_t len)
free(message);
}
}
void AsyncWebSocket::binaryAll(AsyncWebSocketMessageBuffer * buffer)
{
if (buffer) {
binaryAll(std::move(buffer->_buffer));
delete buffer;
}
}
void AsyncWebSocket::binaryAll(std::shared_ptr<std::vector<uint8_t>> buffer)
{
for (auto &c : _clients)
if (c.status() == WS_CONNECTED)
c.binary(buffer);
}
size_t AsyncWebSocket::printf(uint32_t id, const char *format, ...){
AsyncWebSocketClient * c = client(id);

View File

@@ -257,28 +257,32 @@ class AsyncWebSocket: public AsyncWebHandler {
void text(uint32_t id, const char *message);
void text(uint32_t id, const String &message);
void text(uint32_t id, const __FlashStringHelper *message);
void text(uint32_t id, AsyncWebSocketMessageBuffer *buffer);
void text(uint32_t id, std::shared_ptr<std::vector<uint8_t>> buffer);
void textAll(std::shared_ptr<std::vector<uint8_t>> buffer);
void textAll(const uint8_t *message, size_t len);
void textAll(const char * message, size_t len);
void textAll(const char * message);
void textAll(const String &message);
void textAll(const __FlashStringHelper *message); // need to convert
void textAll(const __FlashStringHelper *message);
void textAll(AsyncWebSocketMessageBuffer *buffer);
void textAll(std::shared_ptr<std::vector<uint8_t>> buffer);
void binary(uint32_t id, const uint8_t *message, size_t len);
void binary(uint32_t id, const char *message, size_t len);
void binary(uint32_t id, const char *message);
void binary(uint32_t id, const String &message);
void binary(uint32_t id, const __FlashStringHelper *message, size_t len);
void binary(uint32_t id, AsyncWebSocketMessageBuffer *buffer);
void binary(uint32_t id, std::shared_ptr<std::vector<uint8_t>> buffer);
void binaryAll(std::shared_ptr<std::vector<uint8_t>> buffer);
void binaryAll(const uint8_t *message, size_t len);
void binaryAll(const char *message, size_t len);
void binaryAll(const char *message);
void binaryAll(const String &message);
void binaryAll(const __FlashStringHelper *message, size_t len);
void binaryAll(AsyncWebSocketMessageBuffer *buffer);
void binaryAll(std::shared_ptr<std::vector<uint8_t>> buffer);
size_t printf(uint32_t id, const char *format, ...) __attribute__ ((format (printf, 3, 4)));
size_t printfAll(const char *format, ...) __attribute__ ((format (printf, 2, 3)));