@ file : Suppress (" NOTH ING _ TO _ INLINE ") Ċ Ċ package Ġpub g . radar . de serializer Ċ Ċ import Ġpub g . radar . bug ln Ċ import Ġpub g . radar . de serializer . channel . Actor Channel Ċ import Ġpub g . radar . de serializer . channel . Channel . Companion . closed In Channels Ċ import Ġpub g . radar . de serializer . channel . Channel . Companion . closed Out Channels Ċ import Ġpub g . radar . de serializer . channel . Channel . Companion . in Channels Ċ import Ġpub g . radar . de serializer . channel . Channel . Companion . out Channels Ċ import Ġpub g . radar . de serializer . channel . Control Channel Ċ import Ġpub g . radar . info Ċ import Ġpub g . radar . inf ol n Ċ import Ġpub g . radar . struct . B unch Ċ Ċ fun ĠInt . d ( w : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠString . format ("% ${ w } d ", Ġthis ) Ċ } Ċ Ċ fun Ġproc _ raw _ packet ( raw : ĠByteArray , Ġclient : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġval Ġreader Ġ= ĠBuffer ( raw ) ĊĠĠĠ Ġreader . proc _ raw _ packet ( client ) Ċ } Ċ Ċ fun ĠBuffer . proc _ raw _ packet ( client : ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( read Bit ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġin fol n Ġ{ Ġ" handshake " Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( read Bit ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġin fol n Ġ{ Ġ" encrypted " Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġpacket Id Ġ= Ġread Int ( MAX _ PACKET ID ) ĊĠĠĠ Ġwhile Ġ( not End ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠIs Ack Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġif Ġ( Is Ack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġack Packet Id Ġ= Ġread Int () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ack Packet Id Ġ== Ġ- 1 ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Has Server Frame Time Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremote In K Bytes PerSecond Ġ= Ġread Int Packed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" ĠPacket ID : Ġ$ packet Id " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġb Control Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġvar Ġb Open Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġb Close Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġb D orm ant Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( b Control ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Open Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Close Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b Close ) Ġb D orm ant Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġb Is Replication Paused Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġval Ġb Rel iable Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġval Ġch Index Ġ= Ġread Int ( MAX _ CHANNEL S ) ĊĠĠĠĠĠĠĠ Ġval Ġb Ph antom Bit Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġval Ġb Has Package Map Exports Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġval Ġb Has Must Be Mapped GUID s Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġval Ġb Partial Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġval Ġch Sequence Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Rel iable Ġ-> Ġread Int ( MAX _ CH SEQUENCE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Partial Ġ-> Ġpacket Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġb Partial Initial Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġb Partial Final Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( b Partial ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Partial Initial Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Partial Final Ġ= Ġread Bit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġch Type Ġ= Ġif Ġ( b Rel iable Ġ|| Ġb Open ) Ġread Int ( CH TYPE _ MAX ) Ġelse ĠCH TYPE _ NONE ĊĠĠĠĠĠĠĠ Ġcheck ( ch Type Ġ<= Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġbunch Data Bits Ġ= Ġread Int ( MAX _ PACKET _ SIZE Ġ* Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġpre Ġ= Ġbits Left () ĊĠĠĠĠĠĠĠ Ġif Ġ( b unch Data Bits Ġ> Ġpre ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchannels Ġ= Ġif Ġ( client ) Ġin Channels Ġelse Ġout Channels ĊĠĠĠĠĠĠĠ Ġval Ġclosed Channels Ġ= Ġif Ġ( client ) Ġclosed In Channels Ġelse Ġclosed Out Channels ĊĠĠĠĠĠĠĠ Ġif Ġ( ch Index Ġ! in Ġchannels Ġ&& Ġ( ch Index Ġ!= Ġ 0 Ġ|| Ġch Type Ġ!= ĠCH TYPE _ CONTROL )) ĊĠĠĠĠĠĠĠ Ġ// ĠCan 't Ġhandle Ġother Ġchannels Ġuntil Ġcontrol Ġchannel Ġexists . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( client Ġ&& Ġchannels [ 0 ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbug ln Ġ{ Ġ" Received Packet : ĠReceived Ġnon - control Ġbunch Ġbefore Ġcontrol Ġchannel Ġwas Ġcreated . ĠCh Index : Ġ$ ch Index , ĠCh Type : Ġ$ ch Type " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġignore Ġcontrol Ġchannel Ġclose Ġif Ġit Ġhasn 't Ġbeen Ġopened Ġyet ĊĠĠĠĠĠĠĠ Ġif Ġ( ch Index Ġ== Ġ 0 Ġ&& Ġchannels [ 0 ] Ġ== Ġnull Ġ&& Ġb Close Ġ&& Ġch Type Ġ== ĠCH TYPE _ CONTROL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbug ln Ġ{ Ġ" Received Packet : ĠReceived Ġcontrol Ġchannel Ġclose Ġbefore Ġopen " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ch Index Ġ! in Ġchannels Ġ&& Ġ! b Rel iable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Un reli able Ġb unches Ġthat Ġopen Ġchannels Ġshould Ġbe Ġb Open Ġ&& Ġ( b Close Ġ|| Ġb Partial ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalid Un reli able Open Ġ= Ġb Open Ġ&& Ġ( b Close Ġ|| Ġb Partial ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! valid Un reli able Open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip Bits ( b unch Data Bits ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbug ln Ġ{ Ġ" receive Ġch Index =$ ch Index , ch Sequence =$ ch Sequence , ch Type =$ ch Type , b Rel iable =$ b Rel iable , b Open =$ b Open , b Close =$ b Close , b Partial =$ b Partial , b Partial Int ial =$ b Partial Initial , b Partial Final =$ b Partial Final " Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ch Index Ġ! in Ġchannels ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ch Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCH TYPE _ CONTROL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannels [ ch Index ] Ġ= ĠControl Channel ( ch Index , Ġclient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCH TYPE _ VOICE , ĠCH TYPE _ FILE Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbug ln Ġ{ Ġ" create Ġch Index =$ ch Index , ch Sequence =$ ch Sequence , ch Type =$ ch Type " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ch Type Ġ== ĠCH TYPE _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ ch Sequence Ġlost Ġthe Ġfirst Ġactor Ġcreation Ġbunch . Ġjust Ġcreate Ġas Ġwe Ġneed Ġit .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Channels [ ch Index ] Ġ= ĠActor Channel ( ch Index , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Channels [ ch Index ] Ġ= ĠActor Channel ( ch Index , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġchan Ġ= Ġchannels [ ch Index ] ĊĠĠĠĠĠĠĠ Ġif Ġ( ch Index Ġin Ġclosed Channels ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbug ln Ġ{ Ġ" reuse Ġchannel Ġ$ ch Index " Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( chan Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( ch Type Ġ== ĠCH TYPE _ NONE Ġ|| Ġch Type Ġ== Ġchan . ch Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" -> Channel [$ ch Index ]" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbunch Ġ= ĠB unch ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbunch Data Bits , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeep Copy ( b unch Data Bits ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch Index , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch Sequence , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Open , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Close , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb D orm ant , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Is Replication Paused , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Rel iable , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ph antom Bit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Partial , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Partial Initial , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Partial Final , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Has Package Map Exports , Ġb Has Must Be Mapped GUID s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchan . Received Raw B unch ( b unch ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIndex OutOfBoundsException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin fol n Ġ{ Ġ" ignore " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġskip Bits ( b unch Data Bits ) ĊĠĠĠĠĠĠĠ Ġcheck ( bits Left () Ġ+ Ġbunch Data Bits Ġ== Ġpre ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ċ }