diff --git a/src/AsyncWebSocket.cpp b/src/AsyncWebSocket.cpp index 787b52a..05dcf1a 100644 --- a/src/AsyncWebSocket.cpp +++ b/src/AsyncWebSocket.cpp @@ -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> buffer) +void AsyncWebSocket::text(uint32_t id, std::shared_ptr> 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> 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> buffer) +void AsyncWebSocket::binary(uint32_t id, std::shared_ptr> 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> 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); diff --git a/src/AsyncWebSocket.h b/src/AsyncWebSocket.h index ac49d2b..1c5e314 100644 --- a/src/AsyncWebSocket.h +++ b/src/AsyncWebSocket.h @@ -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> buffer); - void textAll(std::shared_ptr> 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> 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> buffer); - void binaryAll(std::shared_ptr> 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> 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)));