Exerosis
Zach Klippenstein (he/him) [MOD]
class DelegateInterceptor( private val delegate: ContinuationInterceptor ) : ContinuationInterceptor by delegate { companion object : Key<DelegateInterceptor> override val key = DelegateInterceptor override fun <T> interceptContinuation(continuation: Continuation<T>): Continuation<T> { println("Intercepting continuation") return delegate.interceptContinuation(continuation) } override fun releaseInterceptedContinuation(continuation: Continuation<*>) { println("Relasing continuation") delegate.releaseInterceptedContinuation(continuation) } override fun toString() = "DelegateInterceptor[$delegate]" }
fun main() = runBlocking { withContext(DelegateInterceptor(coroutineContext[ContinuationInterceptor]!!)) { ... } }
ContinuationInterceptor.Key
runBlocking(SomeInterceptorWithAKey()) { println(coroutineContext[ContinuationInterceptor]) }
A modern programming language that makes developers happier.