package Ġorg . h ild an . k ross bow . websocket Ċ Ċ import Ġok io . utf 8 Size Ċ Ċ /** Ċ Ġ* ĠThe Ġmaximum Ġnumber Ġof ĠUTF - 8 Ġbytes Ġallowed Ġby Ġthe Ġweb Ġsocket Ġprotocol Ġfor Ġthe Ġ" reason " Ġin Ġclose Ġframes . Ċ Ġ* ĠThis Ġlimit Ġis Ġdefined Ġin Ġ[ section Ġ 5 . 5 Ġof Ġthe ĠRFC - 6 4 5 5 ]( https :// tools . ietf . org / html / rfc 6 4 5 5 # section - 5 . 5 ). Ċ Ġ*/ Ċ const Ġval ĠCLOSE _ REASON _ MAX _ LENGTH _ BYTES Ġ= Ġ 1 2 3 Ċ Ċ /** Ċ Ġ* ĠTr unc ates Ġthis Ġstring Ġto Ġ 1 2 3 Ġbytes Ġ([ CLOSE _ REASON _ MAX _ LENGTH _ BYTES ]), Ġfor Ġit Ġto Ġbe Ġsuitable Ġas Ġweb Ġsocket Ġclose Ċ Ġ* Ġreason . Ċ Ġ* Ċ Ġ* ĠThe Ġ" reason " Ġin ĠWS Ġclose Ġframes Ġmust Ġnot Ġbe Ġlonger Ġthan Ġ 1 2 3 Ġ* bytes * Ġ( not Ġcharacters !) Ġwhen Ġencoded Ġin ĠUTF - 8 , Ġdue Ġto Ċ Ġ* Ġthe Ġlimit Ġon Ġcontrol Ġframes Ġdefined Ġby Ġthe Ġweb Ġsocket Ġprotocol Ġspecification Ċ Ġ* Ġ[ RFC - 6 4 5 5 ]( https :// tools . ietf . org / html / rfc 6 4 5 5 # section - 5 . 5 ). Ċ Ġ*/ Ċ fun ĠString . truncate To Close Frame Reason Length (): ĠString Ġ= Ġtruncate Utf 8 Bytes Length To ( CLOSE _ REASON _ MAX _ LENGTH _ BYTES ) Ċ Ċ /** Ċ Ġ* ĠReturns Ġthe Ġbiggest Ġprefix Ġof Ġthis Ġstring Ġthat Ġcan Ġbe Ġrepresented Ġwith Ġat Ġmost Ġ[ maxLength ] ĠUTF - 8 Ġbytes . Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġtrunc ation Ġoccurs Ġin Ġthe Ġmiddle Ġof Ġa Ġmult ib yte - character , Ġthe Ġwhole Ġcharacter Ġis Ġremoved . Ċ Ġ*/ Ċ fun ĠString . truncate Utf 8 Bytes Length To ( maxLength : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( utf 8 Size () Ġ<= ĠmaxLength ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġencode To ByteArray (). copyOf ( maxLength ). decode ToString (). trim End Ġ{ Ġit Ġ== Ġ'\ uFF FD ' Ġ} Ċ } Ċ