Hyperlinkv0.8.0-beta.28

Metric

Metric.FiberRuntimeMetricsServiceinterfaceeffect/Metric.ts:3559
FiberRuntimeMetricsService

Interface for the fiber runtime metrics service that tracks fiber lifecycle events.

Example (Providing a custom fiber metrics service)

import { Data, Effect, Layer, Metric } from "effect"
import type { Context, Exit } from "effect"

class MetricsError extends Data.TaggedError("MetricsError")<{
  readonly operation: string
}> {}

// Custom implementation of the metrics service
const customMetricsService: Metric.FiberRuntimeMetricsService = {
  recordFiberStart: (context: Context.Context<never>) => {
    console.log("Fiber started")
    // Custom logic for tracking fiber starts
  },
  recordFiberEnd: (
    context: Context.Context<never>,
    exit: Exit.Exit<unknown, unknown>
  ) => {
    console.log("Fiber completed with exit:", exit)
    // Custom logic for tracking fiber completion based on exit status
  }
}

const program = Effect.gen(function*() {
  // Use the custom metrics service
  const layer = Layer.succeed(Metric.FiberRuntimeMetrics)(customMetricsService)

  return yield* Effect.sleep("100 millis").pipe(Effect.provide(layer))
})
metrics
Source effect/Metric.ts:35594 lines
export interface FiberRuntimeMetricsService {
  readonly recordFiberStart: (context: Context.Context<never>) => void
  readonly recordFiberEnd: (context: Context.Context<never>, exit: Exit<unknown, unknown>) => void
}
Referenced by 2 symbols