package Ġio . vin cent . learning . stack . aio Ċ Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . channels . As ynchronous SocketChannel Ċ import Ġjava . nio . channels . Completion Handler Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠServer Ġread Ġmessage Ġfrom ĠClient Ġcallback Ġhandler ãĢĤ Ċ Ġ* Ċ Ġ* Ġ@ author ĠA sion . Ċ Ġ* Ġ@ since Ġ 2 0 1 8 / 6 / 2 2 . Ċ Ġ*/ Ċ class ĠServer Read Completion Handler ( private Ġval Ġchannel : ĠAs ynchronous SocketChannel ) Ġ: ĠCompletion Handler < Int , ĠByteBuffer > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcompleted ( result : ĠInt ?, Ġattachment : ĠByteBuffer ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġattachment !!. flip () ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠByteArray ( attachment . remaining ()) ĊĠĠĠĠĠĠĠ Ġattachment . get ( body ) ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠString ( body , ĠChar sets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġprintln (" The Ġtime Ġserver Ġreceive Ġorder : Ġ$ req ") ĊĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= Ġif Ġ(" Query ĠTime ĠOrder ". equals ( req , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDate ( System . currentTimeMillis ()). toString () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bad ĠOrder " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġwrite Ġbyte Ġto Ġclient ĊĠĠĠĠĠĠĠ Ġdo Write ( currentTime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Write ( currentTime : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠcurrentTime . toByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġwrite Buffer Ġ= ĠByteBuffer . allocate ( bytes . size ) ĊĠĠĠĠĠĠĠ Ġwrite Buffer . put ( bytes ) ĊĠĠĠĠĠĠĠ Ġwrite Buffer . flip () ĊĠĠĠĠĠĠĠ Ġchannel . write ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Buffer , Ġwrite Buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCompletion Handler < Int , ĠByteBuffer > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompleted ( result : ĠInt , Ġbuffer : ĠByteBuffer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffer . has Remaining ()) Ġchannel . write ( buffer , Ġbuffer , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfailed ( exc : ĠThrowable ?, Ġattachment : ĠByteBuffer ?) Ġ= Ġchannel . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfailed ( exc : ĠThrowable ?, Ġattachment : ĠByteBuffer ?) Ġ= Ġthis . channel . close () Ċ Ċ } Ċ