package Ġcn . nav club . xt . server Ċ Ċ import Ġcn . nav club . xt . server . api . Common Result Ċ import Ġcn . nav club . xt . server . api . Rest Response Ċ import Ġcn . nav club . xt . server . config . ACTION Ċ import Ġcn . nav club . xt . server . config . DATA Ċ import Ġcn . nav club . xt . server . config . TYPE Ċ import Ġcn . nav club . xt . server . enums . APP Action Ċ import Ġcn . nav club . xt . server . enums . T Message Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . json . JsonObject Ċ import Ġio . vertx . kotlin . coroutines . Coroutine Vert icle Ċ import Ġio . vertx . kotlin . coroutines . await Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . lang . RuntimeException Ċ Ċ abstract Ġclass ĠAbstract EB Vert icle Ġ: ĠCor outine Vert icle () Ġ{ ĊĠĠĠ Ġprotected Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( this :: class . java ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġåľ¨ start ä¸Ń ç»Łä¸Ģ æ³¨åĨĮ EventBus ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . vertx . event Bus (). consumer < JsonObject >( this :: class . java . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrs Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Json Ġ= Ġit . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġreq Json . get JsonObject ( DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠT Message . valueOf ( req Json . getString ( TYPE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠAPP Action . valueOf ( req Json . getString ( ACTION )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠT Message . INTERNAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinter Req ( action , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Req ( action , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . fail ( Rest Response . ERROR , Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Event - bus Ġresponse Ġerror !", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . reply ( rs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¯ı ä¸ª Vert icle æł¹æį® å®ŀéĻħ éľĢæ±Ĥ èĩªå®ļä¹ī å®ŀçİ° è¯¥ æĸ¹æ³ķ å¤ĦçĲĨ ç¨ĭåºı åĨħéĥ¨ äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġsuspend Ġfun Ġinter Req ( action : ĠAPP Action , Ġdata : ĠJsonObject ): ĠJsonObject Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJsonObject () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¯ı ä¸ª Vert icle æł¹æį® éľĢæ±Ĥ å®ŀçİ° è¯¥ æĸ¹æ³ķ å¤ĦçĲĨ HTTP è¯·æ±Ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġsuspend Ġfun Ġrest Req ( action : ĠAPP Action , Ġdata : ĠJsonObject ): ĠCommon Result < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRest Response . success < Void >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç¨ĭåºı åĲĦ ä¸ª åįķåħĥ ä¹ĭéĹ´ éĢļä¿¡ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġ< T > Ġrequest EB ( vertx : Vert x , clazz : ĠClass <* >, Ġaction : ĠAPP Action , Ġdata : ĠJsonObject , Ġtype : ĠT Message ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreq Json Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( DATA , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( TYPE , Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put ( ACTION , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvert x . event Bus (). request < T >( clazz . name , Ġreq Json ). await (). body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" EB Ġrequest Ġdata Ġfailed Ġcause :${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }