Skip to content

Commit

Permalink
throttle polling events when message queue gets filled up
Browse files Browse the repository at this point in the history
a proof of concept, might help on long/large responces with user callbacks
  • Loading branch information
vortigont authored and mathieucarbou committed Dec 11, 2024
1 parent 212cbee commit a7d6415
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/AsyncTCP.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,10 @@ static int8_t _tcp_connected(void * arg, tcp_pcb * pcb, int8_t err) {
}

static int8_t _tcp_poll(void * arg, struct tcp_pcb * pcb) {
// throttle polling events queing when event queue is getting filled up, let it handle _onack's
if (uxQueueMessagesWaiting(_async_queue) > (rand() % CONFIG_ASYNC_TCP_QUEUE_SIZE / 2 + CONFIG_ASYNC_TCP_QUEUE_SIZE / 4) )
return ERR_OK;

//ets_printf("+P: 0x%08x\n", pcb);
lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t));
e->event = LWIP_TCP_POLL;
Expand Down

0 comments on commit a7d6415

Please sign in to comment.