package Ġrs . em ulate . modern . codec Ċ Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġio . netty . buffer . Un p ooled Ċ import Ġrs . em ulate . util . crc 3 2 Ċ Ċ class ĠVersion ed Container ( private Ġvar Ġbuffer : ĠByte Buf , Ġversion : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġchecksum : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbuffer . crc 3 2 () ĊĊĠĠĠ Ġvar Ġversion : ĠInt Ġ= Ġversion ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue Ġand Ġ 0 xFFFF ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġreturns Ġan Ġimmutable Ġbuffer Ġ*/ ĊĠĠĠ Ġfun Ġget Buffer (): ĠByte Buf Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuffer . slice () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġaccepts Ġan Ġimmutable Ġbuffer Ġ*/ ĊĠĠĠ Ġfun Ġset Buffer ( buffer : ĠByte Buf ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . buffer Ġ= Ġbuffer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġreturns Ġan Ġimmutable Ġbuffer Ġ*/ ĊĠĠĠ Ġfun Ġwrite (): ĠByte Buf Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtr ailer Ġ= ĠUn p ooled . buffer ( 2 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtr ailer . write Short ( version ) ĊĠĠĠĠĠĠĠ Ġreturn ĠUn p ooled . wrapped Buffer ( buffer , Ġtr ailer ). as ReadOnly () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/* Ġaccepts Ġan Ġimmutable Ġbuffer Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠByte Buf . read Version ed Container (): ĠVersion ed Container Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( readable Bytes () Ġ>= Ġ 2 ) Ġ{ Ġ" No Ġversion Ġtr ailer " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġread Slice ( readable Bytes () Ġ- Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Ġ= Ġread Unsigned Short () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠVersion ed Container ( data , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ