/* Ċ Ġ* ĠCopyright ĠThe ĠOpen Telemetry ĠAuthors Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ*/ Ċ package Ġio . op entelemetry . kotlin . sdk . metrics Ċ Ċ import Ġio . op entelemetry . kotlin . api . common . Attributes Ċ import Ġio . op entelemetry . kotlin . api . metrics . Bound Long Counter Ċ import Ġio . op entelemetry . kotlin . api . metrics . Double Counter Builder Ċ import Ġio . op entelemetry . kotlin . api . metrics . Long Counter Ċ import Ġio . op entelemetry . kotlin . api . metrics . Long Counter Builder Ċ import Ġio . op entelemetry . kotlin . api . metrics . Observable Long Measurement Ċ import Ġio . op entelemetry . kotlin . context . Context Ċ import Ġio . op entelemetry . kotlin . sdk . metrics . common . Instrument Type Ċ import Ġio . op entelemetry . kotlin . sdk . metrics . common . Instrument ValueType Ċ import Ġio . op entelemetry . kotlin . sdk . metrics . internal . descriptor . Instrument Descriptor Ċ import Ġio . op entelemetry . kotlin . sdk . metrics . internal . state . Bound Storage Handle Ċ import Ġio . op entelemetry . kotlin . sdk . metrics . internal . state . Meter Provider Shared State Ċ import Ġio . op entelemetry . kotlin . sdk . metrics . internal . state . Meter Shared State Ċ import Ġio . op entelemetry . kotlin . sdk . metrics . internal . state . Write able Metric Storage Ċ Ċ internal Ġclass ĠS dk Long Counter Ċ private Ġconstructor ( descriptor : ĠInstrument Descriptor , Ġstorage : ĠWrite able Metric Storage ) Ġ: ĊĠĠĠ ĠAbstract Instrument ( descriptor ), ĠLong Counter Ġ{ ĊĠĠĠ Ġprivate Ġval Ġstorage : ĠWrite able Metric Storage ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . storage Ġ= Ġstorage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( increment : ĠLong , Ġattributes : ĠAttributes , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( increment Ġ>= Ġ 0 ) Ġ{ Ġ" Counters Ġcan Ġonly Ġincrease " Ġ} ĊĠĠĠĠĠĠĠ Ġstorage . record Long ( increment , Ġattributes , Ġcontext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( increment : ĠLong , Ġattributes : ĠAttributes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( increment , Ġattributes , ĠContext . current ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( increment : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( increment , ĠAttributes . empty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( attributes : ĠAttributes ): ĠBound Long Counter Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBound Instrument ( storage . bind ( attributes ), Ġattributes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠBound Instrument ( handle : ĠBound Storage Handle , Ġattributes : ĠAttributes ) Ġ: ĊĠĠĠĠĠĠĠ ĠBound Long Counter Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhandle : ĠBound Storage Handle ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġattributes : ĠAttributes ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . handle Ġ= Ġhandle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd ( increment : ĠLong , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( increment Ġ>= Ġ 0 ) Ġ{ Ġ" Counters Ġcan Ġonly Ġincrease " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle . record Long ( increment , Ġattributes , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd ( increment : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( increment , ĠContext . current ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġun bind () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle . release () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠBuilder ( ĊĠĠĠĠĠĠĠ Ġmeter Provider Shared State : ĠMeter Provider Shared State , ĊĠĠĠĠĠĠĠ Ġshared State : ĠMeter Shared State , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠ Ġunit : ĠString ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠAbstract Instrument Builder < Builder >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeter Provider Shared State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠLong Counter Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeter Provider Shared State : ĠMeter Provider Shared State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeter Shared State : ĠMeter Shared State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġ) Ġ: Ġthis ( meter Provider Shared State , Ġmeter Shared State , Ġname , Ġ"", Ġ" 1 ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġ` this `: ĠBuilder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠS dk Long Counter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuild S ynchronous Instrument ( Instrument Type . COUNTER , ĠInstrument ValueType . LONG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor : ĠInstrument Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstorage : ĠWrite able Metric Storage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS dk Long Counter ( descriptor , Ġstorage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġof Doubles (): ĠDouble Counter Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġswap Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeter Provider Shared State : ĠMeter Provider Shared State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared State : ĠMeter Shared State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit : ĠString Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS dk Double Counter . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeter Provider Shared State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild With Callback ( callback : Ġ( Observable Long Measurement ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregister Long As ynchronous Instrument ( Instrument Type . OB SERV ABLE _ SUM , Ġcallback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ