import Ġio . ktor . server . application .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . server . response .* Ċ import Ġio . ktor . server . routing .* Ċ import Ġio . ktor . serialization . kotlin x . json .* Ċ import Ġio . ktor . server . c io .* Ċ import Ġio . ktor . server . engine .* Ċ import Ġio . ktor . server . plugins . content neg otiation .* Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġlibrary . Sim ulated E cu Ċ import Ġkotlin . system . exit Process Ċ Ċ @ Opt In ( Experimental Serialization Api :: class ) Ċ fun Ġstart Embedded Web server () Ġ{ ĊĠĠĠ Ġembedded Server ( C IO , Ġport Ġ= Ġ 8 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstall ( Content Neg otiation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson ( Json Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Len ient Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencode Defaults Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexplicit Null s Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Ġ(" /") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġgateway Instances . map Ġ{ Ġit . to Dto () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd State Routes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Recording Routes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("/ shutdown ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . OK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Process ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. start ( wait Ġ= Ġtrue ) Ċ } Ċ Ċ fun ĠSim Gateway . to Dto (): ĠGateway Data Dto Ġ{ ĊĠĠĠ Ġval Ġgateway E cu Ġ= Ġthis . ec us . first Ġ{ Ġit . config . physical Address Ġ== Ġthis . config . logical Address Ġ} ĊĠĠĠ Ġreturn ĠGateway Data Dto ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġthis . config . name , ĊĠĠĠĠĠĠĠ Ġlogical Address Ġ= Ġ Ġthis . config . logical Address , ĊĠĠĠĠĠĠĠ Ġfunctional Address Ġ= Ġgateway E cu . config . functional Address , ĊĠĠĠĠĠĠĠ Ġe cus Ġ= Ġthis . ec us . filter Ġ{ Ġit Ġ!= Ġgateway E cu Ġ}. map Ġ{ Ġit . to Dto () Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠSim ulated E cu . to Dto (): ĠE cu Data Dto Ġ= ĊĠĠĠ ĠE cu Data Dto ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġthis . name , ĊĠĠĠĠĠĠĠ Ġphysical Address Ġ= Ġthis . config . physical Address , ĊĠĠĠĠĠĠĠ Ġfunctional Address Ġ= Ġthis . config . functional Address , ĊĠĠĠ Ġ) Ċ Ċ @ Serializable Ċ data Ġclass ĠGateway Data Dto ( ĊĠĠĠ Ġvar Ġname : ĠString , ĊĠĠĠ Ġvar Ġlogical Address : ĠShort , ĊĠĠĠ Ġvar Ġfunctional Address : ĠShort , ĊĠĠĠ Ġvar Ġe cus : ĠList < E cu Data Dto >, Ċ ) Ċ Ċ @ Serializable Ċ data Ġclass ĠE cu Data Dto ( ĊĠĠĠ Ġvar Ġname : ĠString , ĊĠĠĠ Ġvar Ġphysical Address : ĠShort , ĊĠĠĠ Ġvar Ġfunctional Address : ĠShort , Ċ ) Ċ