// ĠVer i Block ĠBlock chain ĠProject Ċ // ĠCopyright Ġ 2 0 1 7 - 2 0 1 8 ĠVer i Block , ĠInc Ċ // ĠCopyright Ġ 2 0 1 8 - 2 0 2 1 ĠX en ios ĠSE ZC Ċ // ĠAll Ġrights Ġreserved . Ċ // Ġhttps :// www . ver ib lock . org Ċ // ĠDistributed Ġunder Ġthe ĠMIT Ġsoftware Ġlicense , Ġsee Ġthe Ġaccompanying Ċ // Ġfile ĠLICENSE Ġor Ġhttp :// www . opensource . org / licenses / mit - license . php . Ċ package Ġorg . ver ib lock . sdk . util Ċ Ċ import Ġorg . ver ib lock . core . utilities . Utility Ċ import Ġjava . io . OutputStream Ċ import Ġjava . nio . ByteBuffer Ċ Ċ fun ĠOutputStream . write Single Byte Length Value ( value : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġtrimmed Ġ= ĠUtility . trimmed ByteArray From Integer ( value ) ĊĠĠĠ Ġwrite ( trimmed . size ) ĊĠĠĠ Ġwrite ( trimmed ) Ċ } Ċ Ċ fun ĠOutputStream . write Single Byte Length Value ( value : ĠLong ) Ġ{ ĊĠĠĠ Ġval Ġtrimmed Ġ= ĠUtility . trimmed ByteArray From Long ( value ) ĊĠĠĠ Ġwrite ( trimmed . size ) ĊĠĠĠ Ġwrite ( trimmed ) Ċ } Ċ Ċ fun ĠOutputStream . write Single Byte Length Value ( value : ĠByteArray ) Ġ{ ĊĠĠĠ Ġwrite ( value . size ) ĊĠĠĠ Ġwrite ( value ) Ċ } Ċ Ċ fun ĠOutputStream . write Single Int Length Value ( value : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġvalue Bytes Ġ= ĠUtility . toByteArray ( value ) ĊĠĠĠ Ġwrite Single Byte Length Value ( value Bytes ) Ċ } Ċ Ċ fun ĠOutputStream . write Variable Length Value ( value : ĠByteArray ) Ġ{ ĊĠĠĠ Ġval Ġdata Size Ġ= ĠUtility . trimmed ByteArray From Integer ( value . size ) ĊĠĠĠ Ġwrite ( data Size . size ) ĊĠĠĠ Ġwrite ( data Size ) ĊĠĠĠ Ġwrite ( value ) Ċ } Ċ Ċ fun ĠByteBuffer . get Single Byte Length Value ( min Length : ĠInt , ĠmaxLength : ĠInt ): ĠByteArray Ġ{ ĊĠĠĠ Ġval Ġlength Ġ= Ġget (). toInt () ĊĠĠĠ Ġlength . check Length ( min Length , ĠmaxLength ) ĊĠĠĠ Ġval Ġvalue Ġ= ĠByteArray ( length ) ĊĠĠĠ Ġthis [ value ] ĊĠĠĠ Ġreturn Ġvalue Ċ } Ċ Ċ fun ĠByteBuffer . get Variable Length Value ( min Length : ĠInt , ĠmaxLength : ĠInt ): ĠByteArray Ġ{ ĊĠĠĠ Ġval Ġlength Length Ġ= Ġget () ĊĠĠĠ Ġlength Length . toInt (). check Length ( 0 , Ġ 4 ) ĊĠĠĠ Ġval Ġlength Bytes Ġ= ĠByteArray ( 4 ) ĊĠĠĠ Ġthis [ length Bytes , Ġ 4 Ġ- Ġlength Length , Ġlength Length . toInt ()] ĊĠĠĠ Ġval Ġlength Ġ= ĠByteBuffer . wrap ( length Bytes ). int ĊĠĠĠ Ġlength . check Length ( min Length , ĠmaxLength ) ĊĠĠĠ Ġval Ġvalue Ġ= ĠByteArray ( length ) ĊĠĠĠ Ġthis [ value ] ĊĠĠĠ Ġreturn Ġvalue Ċ } Ċ Ċ private Ġfun ĠInt . check Length ( min : ĠInt , Ġmax : ĠInt ) Ġ{ ĊĠĠĠ Ġrequire ( this Ġin Ġmin .. max ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Unexpected Ġlength : Ġ$ this Ġ( expected Ġa Ġvalue Ġbetween Ġ$ min Ġand Ġ$ max )" ĊĠĠĠ Ġ} Ċ } Ċ