package Ġo phan . thrift . benchmark Ċ Ċ import Ġcom . microsoft . thr ifty . Adapter Ċ import Ġcom . microsoft . thr ifty . Struct Ċ import Ġcom . microsoft . thr ifty . Struct Builder Ċ import Ġcom . microsoft . thr ifty . TType Ċ import Ġcom . microsoft . thr ifty . Thrift Exception Ċ import Ġcom . microsoft . thr ifty . Thrift Field Ċ import Ġcom . microsoft . thr ifty . protocol . Protocol Ċ import Ġcom . microsoft . thr ifty . util . Protocol Util Ċ import Ġkotlin . Boolean Ċ import Ġkotlin . Int Ċ import Ġkotlin . Long Ċ import Ġkotlin . jvm . Jvm Field Ċ import Ġkotlin . jvm . Jvm Static Ċ Ċ enum Ġclass ĠRequest Type (@ Jvm Field Ġval Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFetch Ġthe Ġhome Ġand Ġall Ġits Ġgroups Ġincluding Ġpersonal ised Ġgroups . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠHome Front And Groups ( 0 ), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFetch Ġa Ġfront Ġand Ġassociated Ġgroups . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠFront And Groups ( 1 ), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFetch Ġa Ġsingle Ġgroup ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠGroup ( 2 ), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFetch Ġa Ġlist . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠList ( 3 ), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFetch Ġa Ġsingle Ġitem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠItem ( 4 ), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPerform Ġa Ġsearch . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠSearch ( 5 ); ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠfindBy Value ( value : ĠInt ): ĠRequest Type ? Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠHome Front And Groups ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠFront And Groups ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠGroup ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠList ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> ĠItem ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> ĠSearch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠConnection Type (@ Jvm Field Ġval Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġrequest Ġwas Ġperformed Ġover ĠW ifi . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠW ifi ( 0 ), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġrequest Ġwas Ġperformed Ġover Ġa Ġcell ular Ġconnection . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠW W AN ( 1 ); ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠfindBy Value ( value : ĠInt ): ĠConnection Type ? Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠW ifi ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠW W AN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠBenchmark Type (@ Jvm Field Ġval Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTime Ġto Ġdisplay Ġan Ġarticle Ġfrom Ġinitial Ġtap Ġto ĠDOM Ġbeing Ġready . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠT ap To Article Display ( 0 ), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTime Ġfrom Ġapp Ġlaunch Ġto Ġhome Ġfront Ġfront Ġbeing Ġdisplayed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠLaunch Time ( 1 ); ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠfindBy Value ( value : ĠInt ): ĠBenchmark Type ? Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠT ap To Article Display ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠLaunch Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠNetwork Operation Data ( ĊĠĠĠ Ġ@ Jvm Field Ġ@ Thrift Field ( fieldId Ġ= Ġ 1 , Ġis Required Ġ= Ġtrue ) Ġval Ġrequest Type : ĠRequest Type , ĊĠĠĠ Ġ@ Jvm Field Ġ@ Thrift Field ( fieldId Ġ= Ġ 2 , Ġis Required Ġ= Ġtrue ) Ġval Ġmeasured Time Ms : ĠLong , ĊĠĠĠ Ġ@ Jvm Field Ġ@ Thrift Field ( fieldId Ġ= Ġ 3 , Ġis Optional Ġ= Ġtrue ) Ġval Ġconnection Type : ĠConnection Type ?, ĊĠĠĠ Ġ@ Jvm Field Ġ@ Thrift Field ( fieldId Ġ= Ġ 4 , Ġis Required Ġ= Ġtrue ) Ġval Ġsuccess : ĠBoolean Ġ= Ġtrue Ċ ) Ġ: ĠStruct Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġwrite ( protocol : ĠProtocol ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAD AP TER . write ( protocol , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBuilder Ġ: ĠStruct Builder < Network Operation Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġrequest Type : ĠRequest Type ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmeasured Time Ms : ĠLong ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġconnection Type : ĠConnection Type ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsuccess : ĠBoolean ? Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . request Type Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . meas ured Time Ms Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . connection Type Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . success Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconstructor ( source : ĠNetwork Operation Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . request Type Ġ= Ġsource . request Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . meas ured Time Ms Ġ= Ġsource . meas ured Time Ms ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . connection Type Ġ= Ġsource . connection Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . success Ġ= Ġsource . success ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġrequest Type ( request Type : ĠRequest Type ) Ġ= Ġapply Ġ{ Ġthis . request Type Ġ= Ġrequest Type Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmeasured Time Ms ( meas ured Time Ms : ĠLong ) Ġ= Ġapply Ġ{ Ġthis . meas ured Time Ms Ġ= Ġmeasured Time Ms Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġconnection Type ( connection Type : ĠConnection Type ?) Ġ= Ġapply Ġ{ Ġthis . connection Type Ġ= Ġconnection Type Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsuccess ( success : ĠBoolean ) Ġ= Ġapply Ġ{ Ġthis . success Ġ= Ġsuccess Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠNetwork Operation Data Ġ= ĠNetwork Operation Data ( request Type Ġ= ĠcheckNotNull ( request Type ) Ġ{ Ġ" Required Ġfield Ġ' request Type ' Ġis Ġmissing " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeasured Time Ms Ġ= ĠcheckNotNull ( meas ured Time Ms ) Ġ{ Ġ" Required Ġfield Ġ' meas ured Time Ms ' Ġis Ġmissing " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Type Ġ= Ġthis . connection Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= ĠcheckNotNull ( success ) Ġ{ Ġ" Required Ġfield Ġ' success ' Ġis Ġmissing " Ġ}) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . request Type Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . meas ured Time Ms Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . connection Type Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . success Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠNetwork Operation Data Adapter Ġ: ĠAdapter < Network Operation Data , ĠBuilder > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( protocol : ĠProtocol ) Ġ= Ġread ( protocol , ĠBuilder ()) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( protocol : ĠProtocol , Ġbuilder : ĠBuilder ): ĠNetwork Operation Data Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read StructBegin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Meta Ġ= Ġprotocol . readField Begin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Meta . type Id Ġ== ĠTType . STOP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( field Meta . fieldId . toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Meta . type Id Ġ== ĠTType . I 3 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Type Ġ= Ġprotocol . read I 3 2 (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Type . findBy Value ( it ) Ġ?: Ġthrow ĠThrift Exception ( Thrift Exception . Kind . PROTOCOL _ ERROR , Ġ" Unexpected Ġvalue Ġfor Ġenum Ġtype ĠRequest Type : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . request Type ( request Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol Util . skip ( protocol , Ġfield Meta . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Meta . type Id Ġ== ĠTType . I 6 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeasured Time Ms Ġ= Ġprotocol . read I 6 4 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . meas ured Time Ms ( meas ured Time Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol Util . skip ( protocol , Ġfield Meta . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Meta . type Id Ġ== ĠTType . I 3 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnection Type Ġ= Ġprotocol . read I 3 2 (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Type . findBy Value ( it ) Ġ?: Ġthrow ĠThrift Exception ( Thrift Exception . Kind . PROTOCOL _ ERROR , Ġ" Unexpected Ġvalue Ġfor Ġenum Ġtype ĠConnection Type : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . connection Type ( connection Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol Util . skip ( protocol , Ġfield Meta . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Meta . type Id Ġ== ĠTType . BOOL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġprotocol . read Bool () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . success ( success ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol Util . skip ( protocol , Ġfield Meta . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠProtocol Util . skip ( protocol , Ġfield Meta . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . readField End () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read StructEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( protocol : ĠProtocol , Ġstruct : ĠNetwork Operation Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write StructBegin (" Network Operation Data ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldBegin (" request Type ", Ġ 1 , ĠTType . I 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write I 3 2 ( struct . request Type . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldBegin (" meas ured Time Ms ", Ġ 2 , ĠTType . I 6 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write I 6 4 ( struct . meas ured Time Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( struct . connection Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldBegin (" connection Type ", Ġ 3 , ĠTType . I 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write I 3 2 ( struct . connection Type . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldBegin (" success ", Ġ 4 , ĠTType . BOOL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write Bool ( struct . success ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeField Stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write StructEnd () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠAD AP TER : ĠAdapter < Network Operation Data , ĠBuilder > Ġ= ĠNetwork Operation Data Adapter () ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠBenchmark Data (@ Jvm Field Ġ@ Thrift Field ( fieldId Ġ= Ġ 1 , Ġis Required Ġ= Ġtrue ) Ġval Ġtype : ĠBenchmark Type , Ġ@ Jvm Field Ġ@ Thrift Field ( fieldId Ġ= Ġ 2 , Ġis Required Ġ= Ġtrue ) Ġval Ġmeasured Time Ms : ĠLong ) Ġ: ĠStruct Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġwrite ( protocol : ĠProtocol ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAD AP TER . write ( protocol , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠBuilder Ġ: ĠStruct Builder < Benchmark Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġtype : ĠBenchmark Type ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmeasured Time Ms : ĠLong ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . meas ured Time Ms Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconstructor ( source : ĠBenchmark Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġsource . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . meas ured Time Ms Ġ= Ġsource . meas ured Time Ms ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtype ( type : ĠBenchmark Type ) Ġ= Ġapply Ġ{ Ġthis . type Ġ= Ġtype Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmeasured Time Ms ( meas ured Time Ms : ĠLong ) Ġ= Ġapply Ġ{ Ġthis . meas ured Time Ms Ġ= Ġmeasured Time Ms Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠBenchmark Data Ġ= ĠBenchmark Data ( type Ġ= ĠcheckNotNull ( type ) Ġ{ Ġ" Required Ġfield Ġ' type ' Ġis Ġmissing " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeasured Time Ms Ġ= ĠcheckNotNull ( meas ured Time Ms ) Ġ{ Ġ" Required Ġfield Ġ' meas ured Time Ms ' Ġis Ġmissing " Ġ}) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . meas ured Time Ms Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠBenchmark Data Adapter Ġ: ĠAdapter < Benchmark Data , ĠBuilder > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( protocol : ĠProtocol ) Ġ= Ġread ( protocol , ĠBuilder ()) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread ( protocol : ĠProtocol , Ġbuilder : ĠBuilder ): ĠBenchmark Data Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read StructBegin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Meta Ġ= Ġprotocol . readField Begin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Meta . type Id Ġ== ĠTType . STOP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( field Meta . fieldId . toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Meta . type Id Ġ== ĠTType . I 3 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġprotocol . read I 3 2 (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBenchmark Type . findBy Value ( it ) Ġ?: Ġthrow ĠThrift Exception ( Thrift Exception . Kind . PROTOCOL _ ERROR , Ġ" Unexpected Ġvalue Ġfor Ġenum Ġtype ĠBenchmark Type : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . type ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol Util . skip ( protocol , Ġfield Meta . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Meta . type Id Ġ== ĠTType . I 6 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeasured Time Ms Ġ= Ġprotocol . read I 6 4 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . meas ured Time Ms ( meas ured Time Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol Util . skip ( protocol , Ġfield Meta . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠProtocol Util . skip ( protocol , Ġfield Meta . type Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . readField End () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . read StructEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( protocol : ĠProtocol , Ġstruct : ĠBenchmark Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write StructBegin (" Benchmark Data ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldBegin (" type ", Ġ 1 , ĠTType . I 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write I 3 2 ( struct . type . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldBegin (" meas ured Time Ms ", Ġ 2 , ĠTType . I 6 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write I 6 4 ( struct . meas ured Time Ms ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeFieldEnd () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . writeField Stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol . write StructEnd () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠAD AP TER : ĠAdapter < Benchmark Data , ĠBuilder > Ġ= ĠBenchmark Data Adapter () ĊĠĠĠ Ġ} Ċ } Ċ