Allows to check queue status (#411)
This commit is contained in:
parent
5ef7ffcd41
commit
736a54af1a
|
@ -544,6 +544,11 @@ void AsyncWebSocketClient::_runQueue(){
|
|||
}
|
||||
}
|
||||
|
||||
bool AsyncWebSocketClient::queueIsFull(){
|
||||
if((_messageQueue.length() >= WS_MAX_QUEUED_MESSAGES) || (_status != WS_CONNECTED) ) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void AsyncWebSocketClient::_queueMessage(AsyncWebSocketMessage *dataMessage){
|
||||
if(dataMessage == NULL)
|
||||
return;
|
||||
|
@ -876,6 +881,20 @@ void AsyncWebSocket::_handleDisconnect(AsyncWebSocketClient * client){
|
|||
});
|
||||
}
|
||||
|
||||
bool AsyncWebSocket::availableForWriteAll(){
|
||||
for(const auto& c: _clients){
|
||||
if(c->queueIsFull()) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AsyncWebSocket::availableForWrite(uint32_t id){
|
||||
for(const auto& c: _clients){
|
||||
if(c->queueIsFull() && (c->id() == id )) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
size_t AsyncWebSocket::count() const {
|
||||
return _clients.count_if([](AsyncWebSocketClient * c){
|
||||
return c->status() == WS_CONNECTED;
|
||||
|
|
|
@ -189,6 +189,7 @@ class AsyncWebSocketClient {
|
|||
|
||||
//data packets
|
||||
void message(AsyncWebSocketMessage *message){ _queueMessage(message); }
|
||||
bool queueIsFull();
|
||||
|
||||
size_t printf(const char *format, ...) __attribute__ ((format (printf, 2, 3)));
|
||||
#ifndef ESP32
|
||||
|
@ -237,6 +238,8 @@ class AsyncWebSocket: public AsyncWebHandler {
|
|||
const char * url() const { return _url.c_str(); }
|
||||
void enable(bool e){ _enabled = e; }
|
||||
bool enabled() const { return _enabled; }
|
||||
bool availableForWriteAll();
|
||||
bool availableForWrite(uint32_t id);
|
||||
|
||||
size_t count() const;
|
||||
AsyncWebSocketClient * client(uint32_t id);
|
||||
|
|
Loading…
Reference in New Issue