ContinuationInterceptor

interface ContinuationInterceptor : CoroutineContext.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.

Since Kotlin

1.3

Types

Key
Link copied to clipboard
object Key : CoroutineContext.Key<ContinuationInterceptor>

The key that defines the context interceptor.

Functions

fold
Link copied to clipboard
open override fun <R> fold(initial: R, operation: (R, CoroutineContext.Element) -> R): R

Accumulates entries of this context starting with initial value and applying operation from left to right to current accumulator value and each element of this context.

get
Link copied to clipboard
open operator override fun <E : CoroutineContext.Element> get(key: CoroutineContext.Key<E>): E?

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

interceptContinuation
Link copied to clipboard
abstract fun <T> interceptContinuation(continuation: Continuation<T>): Continuation<T>

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.

minusKey
Link copied to clipboard
open override fun minusKey(key: CoroutineContext.Key<*>): CoroutineContext

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

plus
Link copied to clipboard
open operator fun plus(context: CoroutineContext): CoroutineContext

Returns a context containing elements from this context and elements from other context. The elements from this context with the same key as in the other one are dropped.

releaseInterceptedContinuation
Link copied to clipboard
open fun releaseInterceptedContinuation(continuation: Continuation<*>)

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.

Properties

key
Link copied to clipboard
abstract val key: CoroutineContext.Key<*>

A key of this coroutine context element.