.kotlinx.kotlinx-coroutines-reactor.1.9.0.source-code.ReactorContextInjector.kt Maven / Gradle / Ivy
package kotlinx.coroutines.reactor
import kotlinx.coroutines.reactive.*
import org.reactivestreams.*
import reactor.core.publisher.*
import reactor.util.context.*
import kotlin.coroutines.*
internal class ReactorContextInjector : ContextInjector {
/**
* Injects all values from the [ReactorContext] entry of the given coroutine context
* into the downstream [Context] of Reactor's [Publisher] instances of [Mono] or [Flux].
*/
override fun injectCoroutineContext(publisher: Publisher, coroutineContext: CoroutineContext): Publisher {
val reactorContext = coroutineContext[ReactorContext]?.context ?: return publisher
return when(publisher) {
is Mono -> publisher.contextWrite(reactorContext)
is Flux -> publisher.contextWrite(reactorContext)
else -> publisher
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy