/* Ċ Ġ* ĠTh r ifty Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation Ċ Ġ* Ċ Ġ* ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the ĠLicense ); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠTHIS ĠCODE ĠIS ĠPROVIDED ĠON ĠAN Ġ Ġ* AS ĠIS * ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR Ċ Ġ* ĠCONDITIONS ĠOF ĠANY ĠKIND , ĠE IT HER ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING Ċ Ġ* ĠWITHOUT ĠLIMIT ATION ĠANY ĠIMPLIED ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠTITLE , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE , ĠMER CHANT AB L ITY ĠOR ĠNON - INFRINGEMENT . Ċ Ġ* Ċ Ġ* ĠSee Ġthe ĠApache ĠVersion Ġ 2 . 0 ĠLicense Ġfor Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . microsoft . thr ifty . util Ċ Ċ import Ġcom . microsoft . thr ifty . TType Ċ import Ġcom . microsoft . thr ifty . internal . Protocol Exception Ċ import Ġcom . microsoft . thr ifty . protocol . Protocol Ċ import Ġok io . IOException Ċ import Ġkotlin . jvm . Jvm Static Ċ Ċ object ĠProtocol Util Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġskip ( protocol : ĠProtocol , Ġtype Code : ĠByte ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . BOOL Ġ-> Ġprotocol . read Bool () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . BYTE Ġ-> Ġprotocol . read Byte () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . I 1 6 Ġ-> Ġprotocol . read I 1 6 () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . I 3 2 Ġ-> Ġprotocol . read I 3 2 () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . I 6 4 Ġ-> Ġprotocol . read I 6 4 () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . DOUBLE Ġ-> Ġprotocol . read Double () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . STRING Ġ-> Ġprotocol . readString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . STRUCT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read StructBegin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Metadata Ġ= Ġprotocol . readField Begin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Metadata . type Id Ġ== ĠTType . STOP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip ( protocol , Ġfield Metadata . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . readField End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read StructEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . LIST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Metadata Ġ= Ġprotocol . read List Begin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlist Metadata . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip ( protocol , Ġlist Metadata . element TypeId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read List End () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . SET Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Metadata Ġ= Ġprotocol . read Set Begin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġset Metadata . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip ( protocol , Ġset Metadata . element TypeId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read Set End () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTType . MAP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Metadata Ġ= Ġprotocol . read Map Begin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmap Metadata . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip ( protocol , Ġmap Metadata . key TypeId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġskip ( protocol , Ġmap Metadata . value TypeId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read Map End () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠProtocol Exception (" Unrecognized ĠTType Ġvalue : Ġ$ type Code ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ