package Ġtop . fk soft . server . udp . bean Ċ Ċ import Ġj dk Utils . log cat . Logger Ċ Ċ /** Ċ Ġ* Ġ@ author ĠExplo Ċ Ġ*/ Ċ Ċ abstract Ġclass ĠString Packet : Packet Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger . getLogger ( String Packet :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdecode ( bytes : ĠByteArray , Ġoffset : ĠInt , Ġlen : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecode Result Ġ= Ġdecode Str ( String ( bytes , Ġoffset , Ġlen , ĠChar sets . UTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( decode Result . not ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" æĹłæ³ķ è§£æŀĲ éĢļè¿ĩ ï¼Į å»ºè®® æ£ĢæŁ¥ æĹ¥å¿Ĺ .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdecode Result ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġdecode Str ( data : ĠString ): Boolean ĊĊĊĠĠĠ Ġoverride Ġfun Ġencode ( output : ĠByteArray , Ġoffset : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencode Str Ġ= Ġencode Str () ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= Ġencode Str . toByteArray ( Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( array . size Ġ> Ġoutput . size Ġ- Ġoffset ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" æĸĩåŃĹ $ encode Str Ġ è¿ĩ éķ¿ ï¼ģ æĹłæ³ķ è½¬ åĮĸ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( array , 0 , output , offset , array . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġarray . size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġencode Str (): String Ċ }