Skip to content
This repository was archived by the owner on Mar 5, 2026. It is now read-only.

Commit 736a54a

Browse files
Lucme-no-dev
authored andcommitted
Allows to check queue status (me-no-dev#411)
1 parent 5ef7ffc commit 736a54a

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

src/AsyncWebSocket.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,11 @@ void AsyncWebSocketClient::_runQueue(){
544544
}
545545
}
546546

547+
bool AsyncWebSocketClient::queueIsFull(){
548+
if((_messageQueue.length() >= WS_MAX_QUEUED_MESSAGES) || (_status != WS_CONNECTED) ) return true;
549+
return false;
550+
}
551+
547552
void AsyncWebSocketClient::_queueMessage(AsyncWebSocketMessage *dataMessage){
548553
if(dataMessage == NULL)
549554
return;
@@ -876,6 +881,20 @@ void AsyncWebSocket::_handleDisconnect(AsyncWebSocketClient * client){
876881
});
877882
}
878883

884+
bool AsyncWebSocket::availableForWriteAll(){
885+
for(const auto& c: _clients){
886+
if(c->queueIsFull()) return false;
887+
}
888+
return true;
889+
}
890+
891+
bool AsyncWebSocket::availableForWrite(uint32_t id){
892+
for(const auto& c: _clients){
893+
if(c->queueIsFull() && (c->id() == id )) return false;
894+
}
895+
return true;
896+
}
897+
879898
size_t AsyncWebSocket::count() const {
880899
return _clients.count_if([](AsyncWebSocketClient * c){
881900
return c->status() == WS_CONNECTED;

src/AsyncWebSocket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ class AsyncWebSocketClient {
189189

190190
//data packets
191191
void message(AsyncWebSocketMessage *message){ _queueMessage(message); }
192+
bool queueIsFull();
192193

193194
size_t printf(const char *format, ...) __attribute__ ((format (printf, 2, 3)));
194195
#ifndef ESP32
@@ -237,6 +238,8 @@ class AsyncWebSocket: public AsyncWebHandler {
237238
const char * url() const { return _url.c_str(); }
238239
void enable(bool e){ _enabled = e; }
239240
bool enabled() const { return _enabled; }
241+
bool availableForWriteAll();
242+
bool availableForWrite(uint32_t id);
240243

241244
size_t count() const;
242245
AsyncWebSocketClient * client(uint32_t id);

0 commit comments

Comments
 (0)