ktor-utils / io.ktor.util.pipeline / Pipeline

Pipeline

open class Pipeline<TSubject : Any, TContext : Any>

Represents an execution pipeline for asynchronous extensible computations

Constructors

<init>

Pipeline(phase: PipelinePhase, interceptors: List<PipelineInterceptor<TSubject, TContext>>)Pipeline(vararg phases: PipelinePhase)

Represents an execution pipeline for asynchronous extensible computations

Properties

attributes

val attributes: Attributes

Provides common place to store pipeline attributes

isEmpty

val isEmpty: Boolean

items

val items: List<PipelinePhase>

Phases of this pipeline

Functions

addPhase

fun addPhase(phase: PipelinePhase): Unit

Adds phase to the end of this pipeline

afterIntercepted

open fun afterIntercepted(): Unit

Invoked after an interceptor has been installed

execute

suspend fun execute(context: TContext, subject: TSubject): TSubject

Executes this pipeline in the given context and with the given subject

insertPhaseAfter

fun insertPhaseAfter(reference: PipelinePhase, phase: PipelinePhase): Unit

Inserts phase after the reference phase

insertPhaseBefore

fun insertPhaseBefore(reference: PipelinePhase, phase: PipelinePhase): Unit

Inserts phase before the reference phase

intercept

fun intercept(phase: PipelinePhase, block: PipelineInterceptor<TSubject, TContext>): Unit

Adds block to the phase of this pipeline

merge

fun merge(from: Pipeline<TSubject, TContext>): Unit

Merges another pipeline into this pipeline, maintaining relative phases order

Extension Functions

execute

suspend fun <TContext : Any> Pipeline<Unit, TContext>.execute(context: TContext): Unit

Executes this pipeline

intercept

fun <TSubject : Any, TContext : Any> Pipeline<*, TContext>.intercept(phase: PipelinePhase, block: suspend PipelineContext<TSubject, TContext>.(TSubject) -> Unit): Unit

Intercepts an untyped pipeline when the subject is of the given type