package Ġcom . rim mer . metrics . server . generated . type Ċ Ċ import Ġorg . joda . time . DateTime Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġjava . util .* Ċ import Ġcom . rim mer . y tt rium .* Ċ import Ġcom . rim mer . y tt rium . serialize .* Ċ import Ġcom . rim mer . y tt rium . router . plugin . IPAddress Ċ import Ġcom . rim mer . metrics . generated . type .* Ċ Ċ data Ġclass ĠProfile Event ( ĊĠĠĠ Ġval Ġgroup : ĠString , ĊĠĠĠ Ġval Ġevent : ĠString , ĊĠĠĠ Ġval ĠstartTime : ĠLong , ĊĠĠĠ Ġval ĠendTime : ĠLong Ċ ): ĠWrit able Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġencode Json ( writer : ĠJson Writer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . start Object () ĊĠĠĠĠĠĠĠ Ġwriter . field ( group FieldName ) ĊĠĠĠĠĠĠĠ Ġwriter . value ( group ) ĊĠĠĠĠĠĠĠ Ġwriter . field ( event FieldName ) ĊĠĠĠĠĠĠĠ Ġwriter . value ( event ) ĊĠĠĠĠĠĠĠ Ġwriter . field ( startTime FieldName ) ĊĠĠĠĠĠĠĠ Ġwriter . value ( startTime ) ĊĠĠĠĠĠĠĠ Ġwriter . field ( endTime FieldName ) ĊĠĠĠĠĠĠĠ Ġwriter . value ( endTime ) ĊĠĠĠĠĠĠĠ Ġwriter . end Object () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġencode Binary ( buffer : ĠByte Buf ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġheader 0 Ġ= Ġ 6 1 2 ĊĠĠĠĠĠĠĠ Ġbuffer . write Var Int ( header 0 ) ĊĠĠĠĠĠĠĠ Ġbuffer . writeString ( group ) ĊĠĠĠĠĠĠĠ Ġbuffer . writeString ( event ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Var Long ( startTime ) ĊĠĠĠĠĠĠĠ Ġbuffer . write Var Long ( endTime ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠReader ( Profile Event :: class . java , Ġ{ fromJson ( it )}, Ġ{ from Binary ( it )}) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Binary ( buffer : ĠByte Buf ): ĠProfile Event Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgroup : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġevent : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠstartTime : ĠLong Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠendTime : ĠLong Ġ= Ġ 0 L ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . read Object Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġbuffer . readString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Ġ= Ġbuffer . readString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġbuffer . read Var Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= Ġbuffer . read Var Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( group Ġ== Ġnull Ġ|| Ġevent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid StateException (" Profile Event Ġinstance Ġis Ġmissing Ġrequired Ġfields ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠProfile Event ( group !! , Ġevent !! , ĠstartTime , ĠendTime ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Json ( token : ĠJson Token ): ĠProfile Event Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgroup : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġevent : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠstartTime : ĠLong Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠendTime : ĠLong Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . expect ( Json Token . Type . Start Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . parse () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( token . type Ġ== ĠJson Token . Type . End Object ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( token . type Ġ== ĠJson Token . Type . FieldName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( token . string Payload . hashCode ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Field Hash Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . expect ( Json Token . Type . String Lit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġtoken . string Payload ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Field Hash Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . expect ( Json Token . Type . String Lit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Ġ= Ġtoken . string Payload ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Field Hash Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . expect ( Json Token . Type . Number Lit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartTime Ġ= Ġtoken . number Payload . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Field Hash Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken . expect ( Json Token . Type . Number Lit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= Ġtoken . number Payload . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtoken . skip Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid StateException (" Invalid Ġjson : Ġexpected Ġfield Ġor Ġobject Ġend ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( group Ġ== Ġnull Ġ|| Ġevent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid StateException (" Profile Event Ġinstance Ġis Ġmissing Ġrequired Ġfields ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠProfile Event ( group , Ġevent , ĠstartTime , ĠendTime ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ