W3cubDocs

/Kotlin

ContinuationInterceptor

Platform and version requirements: JVM (1.3), JS (1.3), Native (1.3)
interface ContinuationInterceptor : Element

Marks coroutine context element that intercepts coroutine continuations. The coroutines framework uses ContinuationInterceptor.Key to retrieve the interceptor and intercepts all coroutine continuations with interceptContinuation invocations.

ContinuationInterceptor behaves like a polymorphic element, meaning that its implementation delegates get and minusKey to getPolymorphicElement and minusPolymorphicKey respectively. ContinuationInterceptor subtypes can be extracted from the coroutine context using either ContinuationInterceptor.Key or subtype key if it extends AbstractCoroutineContextKey.

Types

Platform and version requirements: JVM (1.0), JS (1.0), Native (1.0)

Key

The key that defines the context interceptor.

companion object Key : Key<ContinuationInterceptor>

Functions

Platform and version requirements: JVM (1.0), JS (1.0), Native (1.0)

get

Returns the element with the given key from this context or null.

open operator fun <E : Element> get(key: Key<E>): E?
Platform and version requirements: JVM (1.0), JS (1.0), Native (1.0)

interceptContinuation

Returns continuation that wraps the original continuation, thus intercepting all resumptions. This function is invoked by coroutines framework when needed and the resulting continuations are cached internally per each instance of the original continuation.

abstract fun <T> interceptContinuation(
    continuation: Continuation<T>
): Continuation<T>
Platform and version requirements: JVM (1.0), JS (1.0), Native (1.0)

minusKey

Returns a context containing elements from this context, but without an element with the specified key.

open fun minusKey(key: Key<*>): CoroutineContext
Platform and version requirements: JVM (1.0), JS (1.0), Native (1.0)

releaseInterceptedContinuation

Invoked for the continuation instance returned by interceptContinuation when the original continuation completes and will not be used anymore. This function is invoked only if interceptContinuation had returned a different continuation instance from the one it was invoked with.

open fun releaseInterceptedContinuation(
    continuation: Continuation<*>)

Extension Functions

Platform and version requirements: JVM (1.3), JS (1.3), Native (1.3)

getPolymorphicElement

Returns the current element if it is associated with the given key in a polymorphic manner or null otherwise. This method returns non-null value if either Element.key is equal to the given key or if the key is associated with Element.key via AbstractCoroutineContextKey. See AbstractCoroutineContextKey for the example of usage.

fun <E : Element> Element.getPolymorphicElement(
    key: Key<E>
): E?
Platform and version requirements: JVM (1.3), JS (1.3), Native (1.3)

minusPolymorphicKey

Returns empty coroutine context if the element is associated with the given key in a polymorphic manner or null otherwise. This method returns empty context if either Element.key is equal to the given key or if the key is associated with Element.key via AbstractCoroutineContextKey. See AbstractCoroutineContextKey for the example of usage.

fun Element.minusPolymorphicKey(
    key: Key<*>
): CoroutineContext

© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.coroutines/-continuation-interceptor/index.html