package Ġio . wave beans . metrics . collector Ċ Ċ import Ġio . wave beans . metrics . Counter Metric Object Ċ import Ġio . wave beans . metrics . Gauge Metric Object Ċ import Ġio . wave beans . metrics . Metric Object Ċ import Ġio . wave beans . metrics . Time Metric Object Ċ import Ġkotlin . reflect . full . is Subclass Of Ċ import Ġkotlin . reflect . jvm . jvm Name Ċ Ċ /** Ċ Ġ* ĠCreates Ġ[ Metric Collector ] Ġof Ġthe Ġspecified Ġclass . ĠClass Ġis Ġbeing Ġfound Ġusing Ġcurrent Ġcaller Ġclass Ġloader . Ċ Ġ* Ċ Ġ* ĠAt Ġleast Ġone Ġof Ġthe Ġconstructors Ġmust Ġhave Ġ 4 Ġparameters : Ċ Ġ* Ġ* Ġ[ Metric Object ] Ċ Ġ* Ġ* Ġ[ down stream Collectors ] Ġas Ġ` List < String >` Ċ Ġ* Ġ* Ġ[ refresh Interval Ms ] Ġas Ġ` Long ` Ċ Ġ* Ġ* Ġ[ gran ular Value In Ms ] Ġas Ġ` Long ` Ċ Ġ*/ Ċ fun Ġcreate Collector ( ĊĠĠĠĠĠĠĠ Ġcollector Class : ĠString , ĊĠĠĠĠĠĠĠ Ġmetric Object : ĠMetric Object <* >, ĊĠĠĠĠĠĠĠ Ġdownstream Collectors : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms : ĠLong , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms : ĠLong Ċ ): ĠMetric Collector < Any > Ġ{ ĊĠĠĠ Ġval Ġconstructor Parameters Ġ= ĠarrayOf ( Metric Object :: class , ĠList :: class , ĠLong :: class , ĠLong :: class ) ĊĠĠĠ Ġval Ġcollector Constructor Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠClass . forName ( collector Class ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" `$ collector Class ` Ġis Ġnot Ġfound ", Ġe ) ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. construct ors ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . parameter Types ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. zip ( constructor Parameters . indices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. all Ġ{ Ġ( clazz , Ġidx ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclazz . kotlin . is Subclass Of ( constructor Parameters [ idx ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" Can 't Ġcreate Ġcollector Ġof Ġclass Ġ$ collector Class Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" because Ġrequired Ġconstructor Ġis Ġnot Ġfound , Ġexpected Ġconstructor Ġwith Ġfollowing Ġparameters : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstructor Parameters . join ToString (",") Ġ{ Ġit . jvm Name Ġ}) ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġreturn Ġcollector Constructor . newInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetric Object , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownstream Collectors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Interval Ms , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgran ular Value In Ms ĊĠĠĠĠĠĠĠ Ġ) Ġas ĠMetric Collector < Any > ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Can 't Ġcreate Ġthe Ġcollector Ġwith Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" collector Class =$ collector Class ( constructor =$ collector Constructor )," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġmetric Object =$ metric Object , Ġdownstream Collectors =$ down stream Collectors , Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" refresh Interval Ms =$ refresh Interval Ms , Ġgran ular Value In Ms =$ gran ular Value In Ms ", Ġe ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġcollector Ġfor Ġ[ Time Metric Object ]. ĠIf Ġthe Ġcollector Ġshould Ġrespect Ġtags Ġthe Ġ[ Metric Object ] Ġshould Ġalready Ġbe Ġwith Ġtags . Ċ Ġ* Ċ Ġ* ĠThe Ġdata Ġis Ġaccumulated Ġas Ġ[ Time Accumulator ] Ġby Ġsum ming Ġup Ġusing Ġ[ Time Accumulator . plus ] Ġoperator . Ċ Ġ*/ Ċ class ĠTime Metric Collector ( ĊĠĠĠĠĠĠĠ Ġmetric Object : ĠTime Metric Object , ĊĠĠĠĠĠĠĠ Ġdownstream Collectors : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms : ĠLong Ġ= Ġ 5 0 0 0 , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms : ĠLong Ġ= Ġ 6 0 0 0 0 Ċ ) Ġ: ĠMetric Collector < Time Accumulator >( ĊĠĠĠĠĠĠĠ Ġmetric Object , ĊĠĠĠĠĠĠĠ Ġdownstream Collectors , ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms , ĊĠĠĠĠĠĠĠ Ġaccumulator Ġ= Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ}, ĊĠĠĠĠĠĠĠ Ġserialize Ġ= Ġ{ Ġ"${ it . count }:${ it . time }" Ġ}, ĊĠĠĠĠĠĠĠ Ġdeserialize Ġ= Ġ{ Ġit . split (" :", Ġlimit Ġ= Ġ 2 ). let Ġ{ ĠTime Accumulator ( it [ 0 ]. toInt (), Ġit [ 1 ]. to Long ()) Ġ} Ġ} Ċ Ċ ) Ċ Ċ /** Ċ Ġ* ĠCreates Ġthe Ġ[ Time Metric Collector ]. Ċ Ġ*/ Ċ fun ĠTime Metric Object . collector ( ĊĠĠĠĠĠĠĠ Ġdownstream Collectors : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms : ĠLong Ġ= Ġ 5 0 0 0 , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms : ĠLong Ġ= Ġ 6 0 0 0 0 Ċ ): ĠMetric Collector < Time Accumulator > Ġ{ ĊĠĠĠ Ġreturn ĠTime Metric Collector ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownstream Collectors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Interval Ms , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgran ular Value In Ms ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġcollector Ġfor Ġ[ Counter Metric Object ]. ĠIf Ġthe Ġcollector Ġshould Ġrespect Ġtags Ġthe Ġ[ Metric Object ] Ġshould Ġalready Ġbe Ġwith Ġtags . Ċ Ġ* Ċ Ġ* ĠThe Ġdata Ġis Ġaccumulated Ġas Ġ[ Double ] Ġby Ġsum ming Ġup Ġusing Ġ[ Double . plus ] Ġoperator . Ċ Ġ*/ Ċ class ĠCounter Metric Collector ( ĊĠĠĠĠĠĠĠ Ġmetric Object : ĠCounter Metric Object , ĊĠĠĠĠĠĠĠ Ġdownstream Collectors : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms : ĠLong Ġ= Ġ 5 0 0 0 , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms : ĠLong Ġ= Ġ 6 0 0 0 0 Ċ ) Ġ: ĠMetric Collector < Double >( ĊĠĠĠĠĠĠĠ Ġmetric Object , ĊĠĠĠĠĠĠĠ Ġdownstream Collectors , ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms , ĊĠĠĠĠĠĠĠ Ġaccumulator Ġ= Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ}, ĊĠĠĠĠĠĠĠ Ġserialize Ġ= Ġ{ Ġit . toString () Ġ}, ĊĠĠĠĠĠĠĠ Ġdeserialize Ġ= Ġ{ Ġit . toDouble () Ġ} Ċ Ċ ) Ċ Ċ /** Ċ Ġ* ĠCreates Ġ[ Counter Metric Collector ]. Ċ Ġ*/ Ċ fun ĠCounter Metric Object . collector ( ĊĠĠĠĠĠĠĠ Ġdownstream Collectors : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms : ĠLong Ġ= Ġ 5 0 0 0 , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms : ĠLong Ġ= Ġ 6 0 0 0 0 Ċ ): ĠMetric Collector < Double > Ġ{ ĊĠĠĠ Ġreturn ĠCounter Metric Collector ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownstream Collectors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Interval Ms , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgran ular Value In Ms ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġcollector Ġfor Ġ[ Gauge Metric Object ]. ĠIf Ġthe Ġcollector Ġshould Ġrespect Ġtags Ġthe Ġ[ Metric Object ] Ġshould Ġalready Ġbe Ġwith Ġtags . Ċ Ġ* Ċ Ġ* ĠThe Ġdata Ġis Ġaccumulated Ġas Ġ[ Gauge Accumulator ] Ġby Ġsum ming Ġup Ġusing Ġ[ Gauge Accumulator . plus ] Ġoperator . Ċ Ġ*/ Ċ class ĠG auge Metric Collector ( ĊĠĠĠĠĠĠĠ Ġmetric Object : ĠG auge Metric Object , ĊĠĠĠĠĠĠĠ Ġdownstream Collectors : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms : ĠLong Ġ= Ġ 5 0 0 0 , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms : ĠLong Ġ= Ġ 6 0 0 0 0 Ċ ) Ġ: ĠMetric Collector < Gauge Accumulator >( ĊĠĠĠĠĠĠĠ Ġmetric Object , ĊĠĠĠĠĠĠĠ Ġdownstream Collectors , ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms , ĊĠĠĠĠĠĠĠ Ġaccumulator Ġ= Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ}, ĊĠĠĠĠĠĠĠ Ġserialize Ġ= Ġ{ Ġ"${ it . isSet }:${ it . increment }" Ġ}, ĊĠĠĠĠĠĠĠ Ġdeserialize Ġ= Ġ{ Ġit . split (" :", Ġlimit Ġ= Ġ 2 ). let Ġ{ ĠG auge Accumulator ( it [ 0 ]. to Boolean (), Ġit [ 1 ]. toDouble ()) Ġ} Ġ} Ċ Ċ ) Ċ Ċ /** Ċ Ġ* ĠCreates Ġ[ Gauge Metric Collector ]. Ċ Ġ*/ Ċ fun ĠG auge Metric Object . collector ( ĊĠĠĠĠĠĠĠ Ġdownstream Collectors : ĠList < String > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġrefresh Interval Ms : ĠLong Ġ= Ġ 5 0 0 0 , ĊĠĠĠĠĠĠĠ Ġgran ular Value In Ms : ĠLong Ġ= Ġ 6 0 0 0 0 Ċ ): ĠMetric Collector < Gauge Accumulator > Ġ{ ĊĠĠĠ Ġreturn ĠG auge Metric Collector ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownstream Collectors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Interval Ms , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgran ular Value In Ms ĊĠĠĠ Ġ) Ċ } Ċ