package Ġnet . jam mos . game server . network . message . server Ċ Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġio . netty . buffer . Un p ooled Ċ import Ġmu . K Logging Ċ import Ġnet . jam mos . game server . network . Server Command Ċ import Ġnet . jam mos . game server . network . message . crypto . Message Crypto Ċ Ċ abstract Ġclass ĠServer Message ( val Ġcommand : ĠServer Command ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠĠĠ Ġabstract Ġfun Ġwrite Data ( output : ĠByte Buf ) ĊĠĠĠ Ġabstract Ġval Ġsize : ĠInt ĊĊĠĠĠ Ġfun Ġwrite ( output : ĠByte Buf , Ġcrypto : ĠMessage Crypto ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠPayload Ġ= Ġ 4 b Ġ+ Ġ{ size } b ĊĠĠĠĠĠĠĠ Ġ// Ġheader Ġ+ Ġdata ĊĠĠĠĠĠĠĠ ĠHeader ( size , Ġcommand ). write ( output , Ġcrypto ) ĊĠĠĠĠĠĠĠ Ġwrite Data ( output ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠHeader ( val Ġsize : ĠInt , Ġval Ġcommand : ĠServer Command ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġwrite ( output : ĠByte Buf , Ġcrypto : ĠMessage Crypto ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHeader Ġpayload Ġ= Ġ 2 b Ġ+ Ġ 2 b ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsize Ġ( uint 1 6 ) Ġ+ Ġcommand Ġ( unit 1 6 , ĠLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġun encrypted Ġ= ĠUn p ooled . buffer ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Short ( size Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Short LE ( command . value . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. array () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . write Bytes ( crypto . encrypt ( un encrypted )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }