in ktor-network/jvm/src/io/ktor/network/selector/SelectorManagerSupport.kt [109:132]
protected fun applyInterest(selector: Selector, s: Selectable) {
try {
val channel = s.channel
val key = channel.keyFor(selector)
val ops = s.interestedOps
if (key == null) {
if (ops != 0) {
channel.register(selector, ops, s)
}
} else {
if (key.interestOps() != ops) {
key.interestOps(ops)
}
}
if (ops != 0) {
pending++
}
} catch (t: Throwable) {
s.channel.keyFor(selector)?.cancel()
cancelAllSuspensions(s, t)
}
}