package Ġkotlinx . io . core Ċ Ċ import Ġkotlinx . io . pool .* Ċ Ċ @ Deprecated (" Use ĠIo Buffer Ġinstead ", Ġreplace With Ġ= ĠReplace With (" Io Buffer ", Ġ" kotlin x . io . core . Io Buffer ")) Ċ type alias ĠBuffer View Ġ= ĠIo Buffer Ċ Ċ /** Ċ Ġ* ĠA Ġread - write Ġfac ade Ġto Ġactual Ġbuffer Ġof Ġfixed Ġsize . ĠMultiple Ġviews Ġcould Ġshare Ġthe Ġsame Ġactual Ġbuffer . Ċ Ġ* ĠConcurrent Ġunsafe . ĠThe Ġonly Ġconcurrent - safe Ġoperation Ġis Ġ[ release ]. Ċ Ġ* ĠIn Ġmost Ġcases Ġ[ Byte Read Packet ] Ġand Ġ[ Byte Packet Builder ] Ġshould Ġbe Ġused Ġinstead . Ċ Ġ*/ Ċ expect Ġclass ĠIo Buffer Ġ: ĠInput , ĠOutput Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReference Ġto Ġan Ġorigin Ġbuffer Ġview Ġthis Ġwas Ġcopied Ġfrom ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġorigin : ĠIo Buffer ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMutable Ġreference Ġto Ġnext Ġbuffer Ġview . ĠUseful Ġto Ġchain Ġmultiple Ġviews ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġnext : ĠIo Buffer ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUser Ġdata : Ġcould Ġbe Ġa Ġsession , Ġconnection Ġor Ġanything Ġuseful ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġattachment : ĠAny ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBack ing Ġbuffer Ġcapacity . ĠValue Ġfor Ġreleased Ġbuffer Ġis Ġunspecified ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcapacity : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAmount Ġof Ġreserved Ġbytes Ġat Ġthe Ġbeginning ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstart Gap : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAmount Ġof Ġreserved Ġbytes Ġat Ġthe Ġend ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġend Gap : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġthere Ġare Ġavailable Ġbytes Ġto Ġbe Ġread ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcan Read (): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġthere Ġis Ġfree Ġroom Ġto Ġfor Ġwrite ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcan Write (): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNumber Ġof Ġbytes Ġavailable Ġfor Ġread ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġread Remaining : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNumber Ġof Ġfree Ġbytes Ġuseful Ġfor Ġwriting . ĠDoes n 't Ġinclude Ġg aps . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġwrite Remaining : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReser ves Ġ[ n ] Ġbytes Ġat Ġthe Ġbeginning . ĠCould Ġbe Ġinvoked Ġonly Ġonce Ġand Ġonly Ġbefore Ġwriting . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreserve Start Gap ( n : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReser ves Ġ[ n ] Ġbytes Ġat Ġthe Ġend Ġof Ġbuffer . ĠCould Ġbe Ġinvoked Ġonly Ġonce Ġand Ġonly Ġif Ġthere Ġare Ġat Ġleast Ġ[ n ] Ġbytes Ġfree ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreserve End Gap ( n : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġread Ġand Ġwrite Ġoperations Ġbyte - order Ġ( endi ann ess ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfinal Ġoverride Ġvar Ġbyte Order : ĠByte Order ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Byte (): ĠByte ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Short (): ĠShort ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Int (): ĠInt ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Long (): ĠLong ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Float (): ĠFloat ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Double (): ĠDouble ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġread Fully Ġinstead ", ĠReplace With (" read Fully ( dst , Ġoffset , Ġlength ) ")) ĊĠĠĠ Ġfun Ġread ( dst : ĠByteArray , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Fully ( dst : ĠByteArray , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Fully ( dst : ĠShort Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Fully ( dst : ĠInt Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Fully ( dst : ĠLong Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Fully ( dst : ĠFloat Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Fully ( dst : ĠDouble Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Fully ( dst : ĠIo Buffer , Ġlength : ĠInt ) ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Available ( dst : ĠByteArray , Ġoffset : ĠInt , Ġlength : ĠInt ): ĠInt ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Available ( dst : ĠShort Array , Ġoffset : ĠInt , Ġlength : ĠInt ): ĠInt ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Available ( dst : ĠInt Array , Ġoffset : ĠInt , Ġlength : ĠInt ): ĠInt ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Available ( dst : ĠLong Array , Ġoffset : ĠInt , Ġlength : ĠInt ): ĠInt ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Available ( dst : ĠFloat Array , Ġoffset : ĠInt , Ġlength : ĠInt ): ĠInt ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Available ( dst : ĠDouble Array , Ġoffset : ĠInt , Ġlength : ĠInt ): ĠInt ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġread Available ( dst : ĠIo Buffer , Ġlength : ĠInt ): ĠInt ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġtry Peek (): ĠInt ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġdiscard ( n : ĠLong ): ĠLong ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDis cards Ġ[ n ] Ġbytes Ġor Ġfails Ġif Ġthere Ġis Ġnot Ġenough Ġbytes Ġavailable Ġfor Ġread . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated (" Extension Ġfunction Ġshould Ġbe Ġused Ġinstead ", Ġlevel Ġ= ĠDeprec ation Level . HIDDEN ) ĊĠĠĠ Ġfun Ġdiscard Exact ( n : ĠInt ) ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Byte ( v : ĠByte ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Short ( v : ĠShort ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Int ( v : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Long ( v : ĠLong ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Float ( v : ĠFloat ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Double ( v : ĠDouble ) ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Fully ( src : ĠByteArray , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Fully ( src : ĠShort Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Fully ( src : ĠInt Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Fully ( src : ĠLong Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Fully ( src : ĠFloat Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Fully ( src : ĠDouble Array , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġwrite Fully ( src : ĠIo Buffer , Ġlength : ĠInt ) ĊĊĠĠĠ Ġfun Ġappend Chars ( cs q : ĠChar Array , Ġstart : ĠInt , Ġend : ĠInt ): ĠInt ĊĠĠĠ Ġfun Ġappend Chars ( cs q : ĠCharSequence , Ġstart : ĠInt , Ġend : ĠInt ): ĠInt ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġappend ( c : ĠChar ): ĠAppend able ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġappend ( cs q : ĠCharSequence ?): ĠAppend able ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġappend ( cs q : ĠCharSequence ?, Ġstart : ĠInt , Ġend : ĠInt ): ĠAppend able ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġappend ( cs q : ĠChar Array , Ġstart : ĠInt , Ġend : ĠInt ): ĠAppend able ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġfill ( n : ĠLong , Ġv : ĠByte ) ĊĊĠĠĠ Ġoverride Ġfun Ġclose () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrites Ġexactly Ġ[ length ] Ġbytes Ġof Ġ[ array ] Ġstarting Ġfrom Ġ[ offset ] Ġposition Ġor Ġfails Ġif Ġnot Ġenough Ġfree Ġspace ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated (" Use Ġwrite Fully Ġinstead ") ĊĠĠĠ Ġfun Ġwrite ( array : ĠByteArray , Ġoffset : ĠInt , Ġlength : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrites Ġ[ length ] Ġbytes Ġof Ġ[ src ] Ġbuffer Ġor Ġfails Ġif Ġnot Ġenough Ġfree Ġspace Ġavailable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated (" Use Ġwrite Fully Ġinstead ", ĠReplace With (" write Fully ( src , Ġlength ) ")) ĊĠĠĠ Ġfun Ġwrite Buffer ( src : ĠIo Buffer , Ġlength : ĠInt ): ĠInt ĊĊĠĠĠ Ġinternal Ġfun Ġwrite Buffer Prepend ( other : ĠIo Buffer ) ĊĠĠĠ Ġinternal Ġfun Ġwrite Buffer Append ( other : ĠIo Buffer , ĠmaxSize : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPush Ġback Ġ[ n ] Ġbytes : Ġonly Ġpossible Ġif Ġthere Ġwere Ġat Ġleast Ġ[ n ] Ġbytes Ġread Ġbefore Ġthis Ġoperation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpush Back ( n : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark s Ġthe Ġwhole Ġbuffer Ġavailable Ġfor Ġwrite Ġand Ġno Ġbytes Ġfor Ġread . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset For Write () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark s Ġup Ġto Ġ[ limit ] Ġbytes Ġof Ġthe Ġbuffer Ġavailable Ġfor Ġwrite Ġand Ġno Ġbytes Ġfor Ġread ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset For Write ( limit : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMark s Ġthe Ġwhole Ġbuffer Ġavailable Ġfor Ġread Ġand Ġno Ġfor Ġwrite ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset For Read () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġand Ġonly Ġif Ġthe Ġare Ġno Ġbuffer Ġviews Ġthat Ġshare Ġthe Ġsame Ġactual Ġbuffer . ĠThis Ġactually Ġdoes ĊĠĠĠĠ Ġ* Ġref count Ġand Ġonly Ġwork Ġguaranteed Ġif Ġother Ġviews Ġcreated / not Ġcreated Ġvia Ġ[ make View ] Ġfunction . ĊĠĠĠĠ Ġ* ĠOne Ġcan Ġinstantiate Ġmultiple Ġbuffers Ġwith Ġthe Ġsame Ġbuffer Ġand Ġthis Ġfunction Ġwill Ġreturn Ġ` true ` Ġin Ġsp ite Ġof ĊĠĠĠĠ Ġ* Ġthe Ġfact Ġthat Ġthe Ġbuffer Ġis Ġactually Ġshared . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Ex clus ively Owned (): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġview Ġto Ġthe Ġsame Ġactual Ġbuffer Ġwith Ġindependent Ġread Ġand Ġwrite Ġpositions Ġand Ġg aps ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmake View (): ĠIo Buffer ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġreleases Ġbuffer Ġview Ġand Ġreturns Ġit Ġto Ġthe Ġ[ pool ] Ġif Ġthere Ġare Ġno Ġmore Ġusage s . ĠBased Ġon Ġsimple Ġref - co uting Ġso ĊĠĠĠĠ Ġ* Ġit Ġis Ġvery Ġfrag ile . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrelease ( pool : ĠObject Pool < Io Buffer >) ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġ`$ update Remaining $ `( remaining : ĠInt ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġ`$ ensure Next $ `( current : ĠIo Buffer ): ĠIo Buffer ? ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġ`$ prepare Read $ `( min Size : ĠInt ): ĠIo Buffer ? ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġ`$ after Write $ `() ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġ`$ prepare Write $ `( n : ĠInt ): ĠIo Buffer ĊĊĠĠĠ Ġfinal Ġoverride Ġfun Ġflush () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠEmpty : ĠIo Buffer ĊĠĠĠĠĠĠĠ Ġval ĠPool : ĠObject Pool < Io Buffer > ĊĠĠĠĠĠĠĠ Ġval ĠNo Pool : ĠObject Pool < Io Buffer > ĊĠĠĠĠĠĠĠ Ġval ĠEmpty Pool : ĠObject Pool < Io Buffer > ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Deprecated (" Use ĠIo Buffer . Empty Pool Ġinstead ", ĊĠĠĠĠĠĠĠ Ġreplace With Ġ= ĠReplace With (" Io Buffer . Empty Pool ", Ġ" kotlin x . io . core . Io Buffer ")) Ċ val ĠEmpty Buffer View Pool Ġget () Ġ= ĠIo Buffer . Empty Pool Ċ Ċ internal Ġobject ĠEmpty Buffer Pool Impl Ġ: ĠNo Pool Impl < Io Buffer >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġborrow () Ġ= ĠIo Buffer . Empty Ċ } Ċ Ċ internal Ġtail rec Ġfun ĠIo Buffer ?. release All ( pool : ĠObject Pool < Io Buffer >) Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġreturn ĊĠĠĠ Ġrelease ( pool ) ĊĠĠĠ Ġnext . release All ( pool ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCopy Ġevery Ġelement Ġof Ġthe Ġchain Ġstarting Ġfrom Ġthis Ġand Ġsetup Ġnext Ġlinks . Ċ Ġ*/ Ċ internal Ġfun ĠIo Buffer . copy All (): ĠIo Buffer Ġ{ ĊĠĠĠ Ġval Ġcopied Ġ= Ġmake View () ĊĠĠĠ Ġval Ġnext Ġ= Ġthis . next Ġ?: Ġreturn Ġcopied ĊĊĠĠĠ Ġreturn Ġnext . copy All ( copied , Ġcopied ) Ċ } Ċ Ċ private Ġtail rec Ġfun ĠIo Buffer . copy All ( head : ĠIo Buffer , Ġprev : ĠIo Buffer ): ĠIo Buffer Ġ{ ĊĠĠĠ Ġval Ġcopied Ġ= Ġmake View () ĊĠĠĠ Ġprev . next Ġ= Ġcopied ĊĊĠĠĠ Ġval Ġnext Ġ= Ġthis . next Ġ?: Ġreturn Ġhead ĊĊĠĠĠ Ġreturn Ġnext . copy All ( head , Ġcopied ) Ċ } Ċ Ċ internal Ġtail rec Ġfun ĠIo Buffer . find Tail (): ĠIo Buffer Ġ{ ĊĠĠĠ Ġval Ġnext Ġ= Ġthis . next Ġ?: Ġreturn Ġthis ĊĠĠĠ Ġreturn Ġnext . find Tail () Ċ } Ċ Ċ /** Ċ Ġ* ĠSum mar ize Ġremain ings Ġof Ġall Ġelements Ġof Ġthe Ġchain Ċ Ġ*/ Ċ internal Ġfun ĠIo Buffer . remaining All (): ĠLong Ġ= Ġremaining All ( 0 L ) Ċ Ċ private Ġtail rec Ġfun ĠIo Buffer . remaining All ( n : ĠLong ): ĠLong Ġ{ ĊĠĠĠ Ġval Ġrem Ġ= Ġread Remaining . to Long () Ġ+ Ġn ĊĠĠĠ Ġval Ġnext Ġ= Ġthis . next Ġ?: Ġreturn Ġrem ĊĊĠĠĠ Ġreturn Ġnext . remaining All ( rem ) Ċ } Ċ Ċ internal Ġtail rec Ġfun ĠIo Buffer . isEmpty (): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( read Remaining Ġ> Ġ 0 ) Ġreturn Ġfalse ĊĠĠĠ Ġval Ġnext Ġ= Ġthis . next Ġ?: Ġreturn Ġtrue ĊĠĠĠ Ġreturn Ġnext . isEmpty () Ċ } Ċ Ċ @ Suppress (" NOTH ING _ TO _ INLINE ") Ċ inline Ġfun ĠLong . coerce At Most Max Int (): ĠInt Ġ= Ġmin Of ( this , ĠInt . MAX _ VALUE . to Long ()). toInt () Ċ Ċ class ĠBuffer Limit Exceeded Exception ( message : ĠString ) Ġ: ĠException ( message )