package Ġcom . example . controllers Ċ Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . request .* Ċ import Ġio . ktor . response .* Ċ import Ġio . ktor . util . pipeline .* Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . business . logic . be . Demand Crud Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . common . be . context . Mp Be Context Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . common . be . models . Mp Stub Case Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . transport . map pers . respond Demand Get Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . transport . map pers . respond Phone List Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . transport . map pers . set Query Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . transport . models . common . Mp Message Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . transport . models . common . ResponseStatus Dto Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . transport . models . demand s .* Ċ import Ġru . ot us . ot us kotlin . phone sell . pa . transport . models . offers .* Ċ import Ġjava . time . Instant Ċ Ċ class ĠM p Demand Controller Ġ( Ġprivate Ġval Ġcr ud : Demand Crud ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlog = LoggerFactory . getLogger ( this :: class . java ) !! ĊĊĠĠĠ Ġsuspend Ġfun Ġcreate ( pipeline Context : ĠPipeline Context < Unit , ĠApplication Call >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest = pipeline Context . call . receive < Mp Message >() Ġas ĠM p Request Demand Create ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// some Ġlogic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : Mp Message = Mp Response Demand Create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ" New Resp 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Ġ= Ġrequest . requestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= Instant . now (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdemand Ġ= Ġrequest . create Data ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Context . call . respond ( response ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error Ġ(" Read Ġchain Ġerror ", e ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM p Response Demand Create ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ" New Resp 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . INTERNAL _ SERVER _ ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġsuspend Ġfun Ġread ( pipeline Context : ĠPipeline Context < Unit , ĠApplication Call >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest = pipeline Context . call . receive < Mp Message >() Ġas ĠM p Request Demand Read ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// some Ġlogic ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : Mp Message = Mp Be Context (). run { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstub Case Ġ= ĠM p Stub Case . DE M AND _ READ _ SUCCESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr ud . read ( set Query ( request )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrespond Demand Get (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Ġ= Ġrequest . requestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= ĠInstant . now (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : Mp Message = Mp Response Demand Read ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Ġ= Ġrequest . requestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime = Instant . now (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Context . call . respond ( response ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error Ġ(" Read Ġchain Ġerror ", e ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM p Response Demand Read ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . INTERNAL _ SERVER _ ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġsuspend Ġfun Ġupdate ( pipeline Context : ĠPipeline Context < Unit , ĠApplication Call >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest = pipeline Context . call . receive < Mp Message >() Ġas ĠM p Request Demand Update ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// some Ġlogic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : Mp Message = Mp Response Demand Update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Ġ= Ġrequest . requestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime = Instant . now (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . SUCCESS , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Context . call . respond ( response ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error Ġ(" Read Ġchain Ġerror ", e ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġsuspend Ġfun Ġdelete Ġ( pipeline Context : ĠPipeline Context < Unit , ĠApplication Call >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest = pipeline Context . call . receive < Mp Message >() Ġas ĠM p Request Demand Delete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// some Ġlogic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : Mp Message = Mp Response Demand Delete ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Ġ= Ġrequest . requestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime = Instant . now (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Context . call . respond ( response ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error Ġ(" Read Ġchain Ġerror ", e ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġlist Ph ones ( pipeline Context : ĠPipeline Context < Unit , ĠApplication Call >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest = pipeline Context . call . receive < Mp Message >() Ġas ĠM p Request Offers List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// some Ġlogic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : Mp Message = Mp Be Context (). run { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstub Case Ġ= ĠM p Stub Case . PHONE _ OFF ERS _ SUCCESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr ud . list Ph ones ( set Query ( request )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrespond Phone List (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request = request . requestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime = Instant . now (). toString (), ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : Mp Message = Mp Response Offers List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Id Ġ= Ġ" Resp List 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Request Ġ= Ġrequest . requestId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= Instant . now (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠResponse Status Dto . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffers Ġ= mutable Set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOffer Products Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" Offer 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbrand Ġ=" Apple ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Ġ= Ġ" I phone Ġ 1 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Stock Ġ= Ġ" 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ=" Ð¡ Ð°Ð¼ ÑĭÐ¹ ĠÐ» ÑĥÑĩ ÑĪÐ¸ Ð¹ ĠÑĤ ÐµÐ» Ðµ ÑĦ Ð¾Ð½ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġ" 1 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġmutable Set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOffer Product Params Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid =" Offer 1 Prop 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Param =" Ð ¦ Ð²ÐµÑĤ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Param =" Ð§ ÐµÑĢ Ð½ÑĭÐ¹ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOffer Product Params Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid =" Offer 1 Prop 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Param =" ÐĶ Ð¸ Ð¾Ð³ Ð°Ð½ Ð°Ð»ÑĮ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Param =" 3 . 5 ĠÐ´ Ñİ Ð¹ Ð¼ Ð° ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmem Proc Grp Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMem Proc Type Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcpu =" Qual comm ĠSnap dragon Ġ 6 6 2 , Ġ 2 0 0 0 ĠÐľ Ðĵ ÑĨ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmemory =" 6 4 Ðĵ Ð± ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Co res =" 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Ram =" 6 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Proc =" Ad re no Ġ 6 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Offer Products Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" Offer 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbrand Ġ=" S amsung ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Ġ= Ġ" G alaxy Ġ 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquantity Stock Ġ= Ġ" 2 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ=" Ðŀ ÑĤ Ð»Ð¸Ñĩ Ð½ÑĭÐ¹ ÑĤ ÐµÐ» Ðµ ÑĦ Ð¾Ð½ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġ" 5 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġmutable Set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOffer Product Params Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid =" Offer 1 Prop 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Param =" Ð ¦ Ð²ÐµÑĤ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Param =" Ð§ ÐµÑĢ Ð½ÑĭÐ¹ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOffer Product Params Dto ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid =" Offer 1 Prop 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Param =" ÐĶ Ð¸ Ð¾Ð³ Ð°Ð½ Ð°Ð»ÑĮ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Param =" 3 . 5 ĠÐ´ Ñİ Ð¹ Ð¼ Ð° ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpipeline Context . call . respond ( response ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error Ġ(" Read Ġchain Ġerror ", e ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ