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