ContinuationInterceptor
interface ContinuationInterceptor : Element
Помечает элемент контекста сопрограммы, который перехватывает продолжения сопрограмм. Система сопрограмм использует ContinuationInterceptor.Key для получения перехватчика и перехватывает все продолжения сопрограмм с помощью вызовов interceptContinuation.
ContinuationInterceptor ведет себя как полиморфный элемент, что означает, что его реализация делегирует get и minusKey соответственно методам getPolymorphicElement и minusPolymorphicKey. Подтипы ContinuationInterceptor могут быть извлечены из контекста сопрограммы с помощью ContinuationInterceptor.Key или ключа подтипа, если он расширяет AbstractCoroutineContextKey.
Типы
Ключ
Ключ, определяющий перехватчик контекста.
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–2022 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