WeakTimeoutQueue
It provides ability to cancel jobs and schedule coroutine with timeout. Unlike regular withTimeout this implementation is never scheduling timer tasks but only checks for current time. This makes timeout measurement much cheaper and doesn't require any watchdog thread.
There are two limitations:
timeout period is fixed
job cancellation is not guaranteed if no new jobs scheduled
The last one limitation is generally unacceptable however in the particular use-case (closing IDLE connection) it is just fine as we really don't care about stalling IDLE connections if there are no more incoming
Constructors
Functions
Execute block and cancel if doesn't complete in time. Unlike the regular kotlinx.coroutines withTimeout, this also checks for cancellation first and fails immediately.