package Ġio . open future . chain . network . handler . network Ċ Ċ import Ġio . netty . channel . Channel Future Listener Ċ import Ġio . netty . channel . Channel Handler . Sh arable Ċ import Ġio . netty . channel . Channel HandlerContext Ċ import Ġio . netty . channel . Simple Channel Inbound Handler Ċ import Ġio . netty . handler . timeout . Idle State . READ ER _ IDLE Ċ import Ġio . netty . handler . timeout . Idle State . WR ITER _ IDLE Ċ import Ġio . netty . handler . timeout . Idle State Event Ċ import Ġio . open future . chain . network . component . Channels Holder Ċ import Ġio . open future . chain . network . message . network . Heart Beat Message Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ @ Sh arable Ċ class ĠHeart Beat Handler ( ĊĠĠĠ Ġprivate Ġval Ġchannels Holder : ĠChannels Holder Ċ ) Ġ: ĠSimple Channel Inbound Handler < Heart Beat Message >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Heart Beat Handler :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchannel Read 0 ( ctx : ĠChannel HandlerContext , Ġmsg : ĠHeart Beat Message ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDo Ġnothing ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġuser Event Triggered ( ctx : ĠChannel HandlerContext , Ġevent : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event Ġ! is ĠId le State Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . user Event Triggered ( ctx , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġevent State Ġ= Ġevent . state () ĊĠĠĠĠĠĠĠ Ġif Ġ( READ ER _ IDLE Ġ== Ġevent State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġchannels Holder . getNode Info By Channel Id ( ctx . channel (). id ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . debug (" Removed Ġidle Ġnode Ġ- Ġ${ ctx . channel (). remote Address () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . close () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( WR ITER _ IDLE Ġ== Ġevent State Ġ&& Ġnull Ġ!= Ġchannels Holder . getNode Info By Channel Id ( ctx . channel (). id ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . write And Flush ( Heart Beat Message ()). addListener ( Channel Future Listener . FIRE _ EXCEPTION _ ON _ FAILURE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ