BatchCallback

org.typelevel.otel4s.metrics.BatchCallback
See theBatchCallback companion object
trait BatchCallback[F[_]]

Attributes

Companion
object
Source
BatchCallback.scala
Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Value members

Abstract methods

def apply(callback: F[Unit], observable: ObservableMeasurement[F, _], rest: ObservableMeasurement[F, _]*): Resource[F, Unit]

Constructs a batch callback.

Constructs a batch callback.

Batch callbacks allow a single callback to observe measurements for multiple asynchronous instruments.

The callback will be called when the instruments are being observed.

Callbacks are expected to abide by the following restrictions:

  • Short-living and (ideally) non-blocking

  • Run in a finite amount of time

  • Safe to call repeatedly, across multiple threads

Value parameters

callback

the callback to to observe values on-demand

observable

the instrument for which the callback may observe values

rest

the instruments for which the callback may observe values

Attributes

Example

val meter: Meter[F] = ???
val server: F[Unit] = ??? // runs the server
val background: Resource[F, Unit] =
 for {
   counter <- Resource.eval(meter.observableCounter[Long]("counter").createObserver)
   upDownCounter <- Resource.eval(meter.observableUpDownCounter[Double]("up-down-counter").createObserver)
   gauge <- Resource.eval(meter.observableGauge[Double]("gauge").createObserver)
   callback = counter.record(1L) *> upDownCounter.record(2.0) *> gauge.record(3.0)
   _ <- meter.batchCallback(callback, counter, upDownCounter, gauge)
 } yield ()
background.surround(server) // register batch callback and run the server
Source
BatchCallback.scala

Concrete methods

final def of[A1, A2](a1: F[ObservableMeasurement[F, A1]], a2: F[ObservableMeasurement[F, A2]])(cb: (ObservableMeasurement[F, A1], ObservableMeasurement[F, A2]) => F[Unit])(implicit F: Apply[F]): Resource[F, Unit]

Constructs a batch callback.

Constructs a batch callback.

Batch callbacks allow a single callback to observe measurements for multiple asynchronous instruments.

The callback will be called when the instruments are being observed.

Callbacks are expected to abide by the following restrictions:

  • Short-living and (ideally) non-blocking

  • Run in a finite amount of time

  • Safe to call repeatedly, across multiple threads

Attributes

Example

val meter: Meter[F] = ???
val server: F[Unit] = ??? // runs the server
val background: Resource[F, Unit] =
 meter.batchCallback.of(
   meter.observableCounter[Long]("counter").createObserver,
   meter.observableUpDownCounter[Double]("up-down-counter").createObserver,
   meter.observableGauge[Double]("gauge").createObserver
 ) { (counter, upDownCounter, gauge) =>
   counter.record(1L) *> upDownCounter.record(2.0) *> gauge.record(3.0)
 }
background.surround(server) // register batch callback and run the server
Source
BatchCallback.scala
final def of[A1, A2, A3](a1: F[ObservableMeasurement[F, A1]], a2: F[ObservableMeasurement[F, A2]], a3: F[ObservableMeasurement[F, A3]])(cb: (ObservableMeasurement[F, A1], ObservableMeasurement[F, A2], ObservableMeasurement[F, A3]) => F[Unit])(implicit F: Apply[F]): Resource[F, Unit]

Attributes

Source
BatchCallback.scala
final def of[A1, A2, A3, A4](a1: F[ObservableMeasurement[F, A1]], a2: F[ObservableMeasurement[F, A2]], a3: F[ObservableMeasurement[F, A3]], a4: F[ObservableMeasurement[F, A4]])(cb: (ObservableMeasurement[F, A1], ObservableMeasurement[F, A2], ObservableMeasurement[F, A3], ObservableMeasurement[F, A4]) => F[Unit])(implicit F: Apply[F]): Resource[F, Unit]

Attributes

Source
BatchCallback.scala
final def of[A1, A2, A3, A4, A5](a1: F[ObservableMeasurement[F, A1]], a2: F[ObservableMeasurement[F, A2]], a3: F[ObservableMeasurement[F, A3]], a4: F[ObservableMeasurement[F, A4]], a5: F[ObservableMeasurement[F, A5]])(cb: (ObservableMeasurement[F, A1], ObservableMeasurement[F, A2], ObservableMeasurement[F, A3], ObservableMeasurement[F, A4], ObservableMeasurement[F, A5]) => F[Unit])(implicit F: Apply[F]): Resource[F, Unit]

Attributes

Source
BatchCallback.scala
final def of[A1, A2, A3, A4, A5, A6](a1: F[ObservableMeasurement[F, A1]], a2: F[ObservableMeasurement[F, A2]], a3: F[ObservableMeasurement[F, A3]], a4: F[ObservableMeasurement[F, A4]], a5: F[ObservableMeasurement[F, A5]], a6: F[ObservableMeasurement[F, A6]])(cb: (ObservableMeasurement[F, A1], ObservableMeasurement[F, A2], ObservableMeasurement[F, A3], ObservableMeasurement[F, A4], ObservableMeasurement[F, A5], ObservableMeasurement[F, A6]) => F[Unit])(implicit F: Apply[F]): Resource[F, Unit]

Attributes

Source
BatchCallback.scala
final def of[A1, A2, A3, A4, A5, A6, A7](a1: F[ObservableMeasurement[F, A1]], a2: F[ObservableMeasurement[F, A2]], a3: F[ObservableMeasurement[F, A3]], a4: F[ObservableMeasurement[F, A4]], a5: F[ObservableMeasurement[F, A5]], a6: F[ObservableMeasurement[F, A6]], a7: F[ObservableMeasurement[F, A7]])(cb: (ObservableMeasurement[F, A1], ObservableMeasurement[F, A2], ObservableMeasurement[F, A3], ObservableMeasurement[F, A4], ObservableMeasurement[F, A5], ObservableMeasurement[F, A6], ObservableMeasurement[F, A7]) => F[Unit])(implicit F: Apply[F]): Resource[F, Unit]

Attributes

Source
BatchCallback.scala
final def of[A1, A2, A3, A4, A5, A6, A7, A8](a1: F[ObservableMeasurement[F, A1]], a2: F[ObservableMeasurement[F, A2]], a3: F[ObservableMeasurement[F, A3]], a4: F[ObservableMeasurement[F, A4]], a5: F[ObservableMeasurement[F, A5]], a6: F[ObservableMeasurement[F, A6]], a7: F[ObservableMeasurement[F, A7]], a8: F[ObservableMeasurement[F, A8]])(cb: (ObservableMeasurement[F, A1], ObservableMeasurement[F, A2], ObservableMeasurement[F, A3], ObservableMeasurement[F, A4], ObservableMeasurement[F, A5], ObservableMeasurement[F, A6], ObservableMeasurement[F, A7], ObservableMeasurement[F, A8]) => F[Unit])(implicit F: Apply[F]): Resource[F, Unit]

Attributes

Source
BatchCallback.scala
final def of[A1, A2, A3, A4, A5, A6, A7, A8, A9](a1: F[ObservableMeasurement[F, A1]], a2: F[ObservableMeasurement[F, A2]], a3: F[ObservableMeasurement[F, A3]], a4: F[ObservableMeasurement[F, A4]], a5: F[ObservableMeasurement[F, A5]], a6: F[ObservableMeasurement[F, A6]], a7: F[ObservableMeasurement[F, A7]], a8: F[ObservableMeasurement[F, A8]], a9: F[ObservableMeasurement[F, A9]])(cb: (ObservableMeasurement[F, A1], ObservableMeasurement[F, A2], ObservableMeasurement[F, A3], ObservableMeasurement[F, A4], ObservableMeasurement[F, A5], ObservableMeasurement[F, A6], ObservableMeasurement[F, A7], ObservableMeasurement[F, A8], ObservableMeasurement[F, A9]) => F[Unit])(implicit F: Apply[F]): Resource[F, Unit]

Attributes

Source
BatchCallback.scala