package Ġparallel 2 0 1 9 . delay proxy _ 1 b Ċ Ċ import Ġparallel 2 0 1 9 . Request . Error Ċ import Ġparallel 2 0 1 9 . Request . Delay Ċ import Ġparallel 2 0 1 9 . Utils Ċ import Ġparallel 2 0 1 9 . Utils . with Socket Ċ import Ġjava . net . Server Socket Ċ import Ġjava . net . Socket Ċ Ċ class ĠRequest Handler ( private Ġval Ġsocket : ĠSocket ) Ġ: ĠThread () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Socket ( socket ) Ġ{ Ġreader , Ġwriter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠUtils . parse Request ( reader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġwhen Ġ( request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDelay Ġ-> Ġdelay AndGet ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError Ġ-> ĠUtils . RC _ 5 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . println ( response ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġdelay AndGet ( request : ĠDelay ): ĠString Ġ{ ĊĠĠĠ ĠThread . sleep ( request . delay ) ĊĠĠĠ Ġval Ġresponse Ġ= ĠUtils . get ( request . uri ) ĊĠĠĠ Ġreturn ĠUtils . create HttpResponse ( response ) Ċ } Ċ Ċ fun Ġlisten () Ġ{ ĊĠĠĠ ĠServer Socket ( Utils . PORT ). use Ġ{ Ġserver Socket Ġ-> ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsocket Ġ= Ġserver Socket . accept () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Handler ( socket ). start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ= Ġlisten ()