package Ġcom . k am ij ou c en . c en im . service . util Ċ Ċ import Ġcom . k am ij ou c en . c en im . common . util . Ch Ctx Ċ import Ġcom . k am ij ou c en . c en im . message . msg . Message Ċ import Ġcom . k am ij ou c en . c en im . service . domain . Router Client To Service Conn Ċ Ċ object ĠMsg Util Ġ{ ĊĊĠĠĠ Ġfun Ġsend Msg ( msg : ĠMessage , Ġconn : ĠRouter Client To Service Conn ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( conn . get Ctx (). channel (). isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconn . get Ctx (). channel (). write And Flush ( msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Msg ( msg : ĠMessage , Ġctx : ĠCh Ctx ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ctx . channel (). isOpen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . channel (). write And Flush ( msg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġfun Ġack ( msg Id : ĠLong , Ġctx : ĠCh Ctx ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġget Ack ( msg Id ) Ċ // ĠĠĠĠĠĠĠ Ġsend Msg ( msg , Ġctx ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġget Ack ( src Id : ĠLong ): ĠMessage Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ 2 0 2 0 / 8 / 3 1 Ċ // ĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠMessage Header ( 1 , ĠMessage Body Type . ACK _ MSG . type , Ġ 1 , Ġ 1 , ĠId Generator . next Id ()) Ċ // ĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠAck Msg Body ( src Id ) Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠMessage ( header , Ġbody ) Ċ // ĠĠĠ Ġ} Ċ Ċ }