/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 2 2 ĠJetBrains Ġs . r . o Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense . Ċ Ġ*/ Ċ Ċ package Ġio . ktor . server . plugins . call log ing Ċ Ċ import Ġio . ktor . server . application .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlinx . coroutines . slf 4 j .* Ċ import Ġorg . slf 4 j .* Ċ Ċ internal Ġclass ĠM DC Entry ( val Ġname : ĠString , Ġval Ġprovider : Ġ( Application Call ) Ġ-> ĠString ?) Ċ Ċ internal Ġsuspend Ġinline Ġfun Ġwith M DC ( ĊĠĠĠ Ġm dc Entries : ĠList < M DC Entry >, ĊĠĠĠ Ġcall : ĠApplication Call , ĊĠĠĠ Ġcross inline Ġblock : Ġsuspend Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġwith Context ( M DC Context ( mdc Entries . setup ( call ))) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm dc Entries . cleanup () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun ĠList < M DC Entry >. setup ( call : ĠApplication Call ): ĠMap < String , ĠString > Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĠHashMap < String , ĠString >() ĊĊĠĠĠ ĠforEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠ Ġentry . provider ( call )?. let Ġ{ Ġm dc Value Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ entry . name ] Ġ= Ġm dc Value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ internal Ġfun ĠList < M DC Entry >. cleanup () Ġ{ ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ ĠM DC . remove ( it . name ) ĊĠĠĠ Ġ} Ċ } Ċ