package Ġme . j inu o . im f . websocket . codec . message Ċ Ċ import Ġme . j inu o . im f . websocket . definition . Command Ċ import Ġjava . nio . ByteBuffer Ċ import Ġkotlin . experimental . and Ċ import Ġkotlin . experimental . or Ċ import Ġkotlin . experimental . xor Ċ Ċ /** Ċ Ġ* Ġ@ date Ġ 2 0 1 9 - 1 0 - 2 6 Ġ 2 0 : 3 0 Ċ Ġ* Ġ@ author Ġfr ank Ċ Ġ* Ġ@ desc Ġæ ¶ Ī æģ¯ å¤´ éĥ¨ ä¸Ģ åħ± 1 0 ä¸ª åŃĹèĬĤ ï¼Ī sn = 8 ï¼ī +( state = 2 )+( module = 2 )+( cmd = 2 ) Ċ Ġ* Ġ 0 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 ĠĠĠĠĠĠĠĠ 6 ĠĠĠĠĠĠĠĠ 8 ĠĠĠĠĠĠĠĠ 1 0 ( BYTE ) Ċ Ġ* Ġ+ -------------------------------- --------+ --------+ --------+ --------+ Ċ Ġ* Ġ| ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsn ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġstate Ġ| ĠĠ Ġmodule Ġ Ġ| Ġ Ġcmd Ġ| Ċ Ġ* Ġ+ -------------------------------- --------+ --------+ --------+ --------+ Ċ Ġ*/ Ċ class ĠHeader Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġread ( buffer : ĠByteBuffer ): ĠHeader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠHeader () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . sn Ġ= Ġbuffer . getInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . state Ġ= Ġbuffer . get Short () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . module Ġ= Ġbuffer . get Short () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . cmd Ġ= Ġbuffer . get Short () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheader ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġvalue Of ( sn : ĠInt , Ġstate : ĠShort , Ġmodule : ĠShort , Ġcmd : ĠShort ): Header Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠHeader () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . sn Ġ= Ġsn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . state Ġ= Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . module Ġ= Ġmodule ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . cmd Ġ= Ġcmd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheader ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// å¤´ éķ¿åº¦ ĊĠĠĠĠĠĠĠ Ġvar ĠHEAD _ LENGTH : ĠInt Ġ= Ġ 1 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 8 Ġbyte ĊĠĠĠ Ġvar Ġsn : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ// Ġ çĬ¶æĢģ ĊĠĠĠ Ġvar Ġstate : ĠShort Ġ= Ġ 0 ĊĠĠĠ Ġ// Ġ 2 Ġbyte ĊĠĠĠ Ġvar Ġmodule : ĠShort Ġ= Ġ 0 ĊĠĠĠ Ġ// Ġ 2 Ġbyte ĊĠĠĠ Ġvar Ġcmd : ĠShort Ġ= Ġ 0 ĊĊĠĠĠ Ġfun Ġget Command (): ĠCommand Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCommand ( module , Ġcmd ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ£Ģ æŁ¥ çĬ¶æĢģ åĢ¼ ä¸Ń æĺ¯åĲ¦ æľī æĮĩå®ļ çĬ¶æĢģ ĊĠĠĠĠ Ġ* Ġ@ param Ġstate Ġ çĬ¶æĢģ åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ param Ġcheck Ġ è¢« æ£ĢæŁ¥ çļĦ çĬ¶æĢģ ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas State ( check : ĠShort ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstate Ġand Ġcheck Ġ== Ġcheck ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ·»åĬł çĬ¶æĢģ ĊĠĠĠĠ Ġ* Ġ@ param Ġadded Ġ è¢« æ·»åĬł çļĦ çĬ¶æĢģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd State ( added : ĠShort ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate Ġor Ġadded ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç§»éĻ¤ çĬ¶æĢģ ĊĠĠĠĠ Ġ* Ġ@ param Ġremoved Ġ è¢« ç§»éĻ¤ çļĦ çĬ¶æĢģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove State ( removed : ĠShort ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġ( state Ġxor Ġremoved ) ĊĠĠĠ Ġ} Ċ Ċ }