package Ġcom . k am ij ou c en . c en im . router . handler Ċ Ċ 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 . router . manager . Router Context Ċ import Ġcom . k am ij ou c en . c en im . router . service . User Chat Service Ċ import Ġcom . k am ij ou c en . c en im . router . util . Ack Sender Ċ import Ġio . netty . channel . Channel Handler Ċ import Ġio . netty . channel . Channel HandlerContext Ċ import Ġio . netty . channel . Simple Channel Inbound Handler Ċ import Ġorg . apache . commons . logging . Log Factory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ @ Channel Handler . Sh arable Ċ class ĠClient To Router Handler Ġ: ĠSimple Channel Inbound Handler < Message >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLog Factory . getLog (" Client To Router Handler ") ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconn Context : ĠRouter Context ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġchat Service : ĠUser Chat Service ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġack Sender : ĠAck Sender ĊĊĠĠĠ Ġoverride Ġfun Ġchannel Read 0 ( ctx : ĠChannel HandlerContext , Ġmsg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsend Ġack Ġmsg ĊĠĠĠĠĠĠĠ Ġack Sender . ack ( msg , Ġctx ) ĊĠĠĠĠĠĠĠ Ġcheck From ( msg ) ĊĠĠĠĠĠĠĠ Ġcheck Dest ( msg ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconsumer Ġ= Ġconn Context . router Msg Process Manager . process [ msg . header . body Type ] ĊĠĠĠĠĠĠĠ Ġif Ġ( consumer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchat Service . sen Msg ( msg ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! consumer . accept ( msg , Ġctx ). success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" msg Ġprocess Ġerror ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġchannel Active ( ctx : ĠChannel HandlerContext ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġconn Context . client To Router Conn Manager . add Conn ( Client To Router Conn ( ctx )) Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchannel Inactive ( ctx : ĠChannel HandlerContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconn Context . client To Router Conn Manager . remove Conn ( ctx ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexception Ca ught ( ctx : ĠChannel HandlerContext , Ġcause : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error ( cause . message , Ġcause ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck From ( msg : ĠMessage ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Dest ( msg : ĠMessage ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }