/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 1 9 ĠJetBrains Ġs . r . o Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġio . ktor . application Ċ Ċ import Ġio . ktor . util . pipeline .* Ċ import Ġio . ktor . request .* Ċ import Ġio . ktor . response .* Ċ Ċ /** Ċ Ġ* ĠPipeline Ġconfiguration Ġfor Ġexecuting Ġ[ Application Call ] Ġinstances Ċ Ġ*/ Ċ @ Suppress (" Public Api Implicit Type ") Ċ open Ġclass ĠApplication Call Pipeline Ġ: ĠPipeline < Unit , ĠApplication Call >( Setup , ĠMonitoring , ĠFeatures , ĠCall , ĠF allback ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPipeline Ġfor Ġreceiving Ġcontent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġreceive Pipeline Ġ= ĠApplication Receive Pipeline () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPipeline Ġfor Ġsending Ġcontent ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsend Pipeline Ġ= ĠApplication Send Pipeline () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStandard Ġphases Ġfor Ġapplication Ġcall Ġpipelines ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject ĠApplication Phase Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPhase Ġfor Ġpre paring Ġcall Ġand Ġit 's Ġattributes Ġfor Ġprocessing ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠSetup Ġ= ĠPipeline Phase (" Setup ") ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPhase Ġfor Ġtracing Ġcalls , Ġuseful Ġfor Ġlogging , Ġmetrics , Ġerror Ġhandling Ġand Ġso Ġon ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠMonitoring Ġ= ĠPipeline Phase (" Monitoring ") ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPhase Ġfor Ġfeatures . ĠMost Ġfeatures Ġshould Ġintercept Ġthis Ġphase . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠFeatures Ġ= ĠPipeline Phase (" Features ") ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPhase Ġfor Ġprocessing Ġa Ġcall Ġand Ġsending Ġa Ġresponse ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠCall Ġ= ĠPipeline Phase (" Call ") ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPhase Ġfor Ġhandling Ġun processed Ġcalls ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠF allback Ġ= ĠPipeline Phase (" Fallback ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCurrent Ġcall Ġfor Ġthe Ġcontext Ċ Ġ*/ Ċ inline Ġval ĠPipeline Context < *, ĠApplication Call >. call : ĠApplication Call Ġget () Ġ= Ġcontext Ċ Ċ /** Ċ Ġ* ĠCurrent Ġapplication Ġfor Ġthe Ġcontext Ċ Ġ*/ Ċ val ĠPipeline Context < *, ĠApplication Call >. application : ĠApplication Ġget () Ġ= Ġcall . application Ċ