package Ġru . cap jack . csi . core . server . internal Ċ Ċ import Ġru . cap jack . csi . core . internal . Internal Channel Processor Ċ import Ġru . cap jack . csi . core . internal . Channel Processor Input Result Ċ import Ġru . cap jack . csi . core . internal . Internal Channel Ċ import Ġru . cap jack . csi . core . internal . Protocol Marker Ċ import Ġru . cap jack . csi . core . internal . Transition Channel Processor Ċ import Ġru . cap jack . tool . io . Input ByteBuffer Ċ Ċ internal Ġclass ĠRecovery Channel Processor ( Ċ ĉ private Ġval Ġaccept or : ĠConnection Recovery Accept or Ċ ) Ġ: ĠInternal Channel Processor Ġ{ ĊĉĊ ĉ override Ġfun Ġprocess Channel Input ( channel : ĠInternal Channel , Ġbuffer : ĠInput ByteBuffer ): ĠChannel Processor Input Result Ġ{ Ċĉ ĉ return Ġif Ġ( buffer . is Readable ( 8 Ġ+ Ġ 4 )) Ġ{ Ċĉĉ ĉ val Ġconnection Id Ġ= Ġbuffer . read Long () Ċĉĉ ĉ val Ġlast Sent MessageId Ġ= Ġbuffer . readInt () ĊĉĉĉĊĉĉ ĉ val Ġconnection Ġ= Ġaccept or . accept Recovery ( connection Id ) ĊĉĉĉĊĉĉ ĉ if Ġ( connection Ġ== Ġnull ) Ġ{ Ċĉĉĉ ĉ channel . close With Marker ( Protocol Marker . SERVER _ CLOSE _ RE COVERY _ FAIL ) Ċĉĉĉ ĉ Channel Processor Input Result . BREAK Ċĉĉ ĉ } Ċĉĉ ĉ else Ġ{ Ċĉĉĉ ĉ channel . use Processor ( Transition Channel Processor ) Ċĉĉĉ ĉ connection . recovery ( channel , Ġlast Sent MessageId ) Ċĉĉĉ ĉ Channel Processor Input Result . CONTINUE Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ else Ġ{ Ċĉĉ ĉ Channel Processor Input Result . BREAK Ċĉ ĉ } Ċ ĉ } ĊĉĊ ĉ override Ġfun Ġprocess Channel Close ( channel : ĠInternal Channel , Ġinterrupted : ĠBoolean ) Ġ{} Ċ } ĊĊ