forked from me-no-dev/ESPAsyncWebServer
Add methods to determine Average Queue length (#509)
* Add methods to determine Average Queue length
This commit is contained in:
@@ -288,9 +288,26 @@ void AsyncEventSource::close(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AsyncEventSource::send(const char *message, const char *event, uint32_t id, uint32_t reconnect){
|
// pmb fix
|
||||||
|
size_t AsyncEventSource::avgPacketsWaiting() const {
|
||||||
if(_clients.isEmpty())
|
if(_clients.isEmpty())
|
||||||
return;
|
return 0;
|
||||||
|
|
||||||
|
size_t aql=0;
|
||||||
|
uint32_t nConnectedClients=0;
|
||||||
|
|
||||||
|
for(const auto &c: _clients){
|
||||||
|
if(c->connected()) {
|
||||||
|
aql+=c->packetsWaiting();
|
||||||
|
++nConnectedClients;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// return aql / nConnectedClients;
|
||||||
|
return ((aql) + (nConnectedClients/2))/(nConnectedClients); // round up
|
||||||
|
}
|
||||||
|
|
||||||
|
void AsyncEventSource::send(const char *message, const char *event, uint32_t id, uint32_t reconnect){
|
||||||
|
|
||||||
|
|
||||||
String ev = generateEventMessage(message, event, id, reconnect);
|
String ev = generateEventMessage(message, event, id, reconnect);
|
||||||
for(const auto &c: _clients){
|
for(const auto &c: _clients){
|
||||||
|
@@ -69,6 +69,7 @@ class AsyncEventSourceClient {
|
|||||||
void send(const char *message, const char *event=NULL, uint32_t id=0, uint32_t reconnect=0);
|
void send(const char *message, const char *event=NULL, uint32_t id=0, uint32_t reconnect=0);
|
||||||
bool connected() const { return (_client != NULL) && _client->connected(); }
|
bool connected() const { return (_client != NULL) && _client->connected(); }
|
||||||
uint32_t lastId() const { return _lastId; }
|
uint32_t lastId() const { return _lastId; }
|
||||||
|
size_t packetsWaiting() const { return _messageQueue.length(); }
|
||||||
|
|
||||||
//system callbacks (do not call)
|
//system callbacks (do not call)
|
||||||
void _onAck(size_t len, uint32_t time);
|
void _onAck(size_t len, uint32_t time);
|
||||||
@@ -91,6 +92,7 @@ class AsyncEventSource: public AsyncWebHandler {
|
|||||||
void onConnect(ArEventHandlerFunction cb);
|
void onConnect(ArEventHandlerFunction cb);
|
||||||
void send(const char *message, const char *event=NULL, uint32_t id=0, uint32_t reconnect=0);
|
void send(const char *message, const char *event=NULL, uint32_t id=0, uint32_t reconnect=0);
|
||||||
size_t count() const; //number clinets connected
|
size_t count() const; //number clinets connected
|
||||||
|
size_t avgPacketsWaiting() const;
|
||||||
|
|
||||||
//system callbacks (do not call)
|
//system callbacks (do not call)
|
||||||
void _addClient(AsyncEventSourceClient * client);
|
void _addClient(AsyncEventSourceClient * client);
|
||||||
|
Reference in New Issue
Block a user