ContinuationInterceptor
interface ContinuationInterceptor : Element
Помечает элемент контекста сопрограммы, который перехватывает продолжения сопрограмм. Система сопрограмм использует ContinuationInterceptor.Key для получения перехватчика и перехватывает все продолжения сопрограмм с вызовами interceptContinuation.
ContinuationInterceptor ведет себя как полиморфный элемент, что означает, что его реализация делегирует get и minusKey соответственно к getPolymorphicElement и minusPolymorphicKey. Подтипы ContinuationInterceptor могут быть извлечены из контекста сопрограммы с помощью ContinuationInterceptor.Key или ключа подтипа, если он расширяет AbstractCoroutineContextKey.
Типы
Key
Ключ, определяющий перехватчик контекста.
companion object Key : Key<ContinuationInterceptor>
Функции
get
Возвращает элемент с заданным ключом из этого контекста или null.
open operator fun <E : Element> get(key: Key<E>): E?
interceptContinuation
Возвращает продолжение, которое оборачивает исходное продолжение, тем самым перехватывая все возобновления. Эта функция вызывается системой сопрограмм при необходимости, и полученные продолжения кэшируются внутри каждого экземпляра исходного продолжения.
abstract fun <T> interceptContinuation( continuation: Continuation<T> ): Continuation<T>
minusKey
Возвращает контекст, содержащий элементы из этого контекста, но без элемента с указанным ключом.
open fun minusKey(key: Key<*>): CoroutineContext
releaseInterceptedContinuation
Вызывается для экземпляра продолжения, возвращенного interceptContinuation, когда исходное продолжение завершается и больше не будет использоваться. Эта функция вызывается только если interceptContinuation вернула другой экземпляр продолжения, отличный от того, с которым она была вызвана.
open fun releaseInterceptedContinuation( continuation: Continuation<*>)
Расширяющие функции
getPolymorphicElement
Возвращает текущий элемент, если он связан с заданным ключом полиморфным образом или null в противном случае. Этот метод возвращает ненулевое значение, если либо Element.key равен заданному ключу, или если ключ связан с Element.key через AbstractCoroutineContextKey. См. AbstractCoroutineContextKey для примера использования.
fun <E : Element> Element.getPolymorphicElement( key: Key<E> ): E?
minusPolymorphicKey
Возвращает пустой контекст сопрограммы, если элемент связан с заданным ключом полиморфным образом или null в противном случае. Этот метод возвращает пустой контекст, если либо Element.key равен заданному ключу, или если ключ связан с Element.key через AbstractCoroutineContextKey. См. AbstractCoroutineContextKey для примера использования.
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