FiberRuntimeMetricsServiceInterface 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 FiberRuntimeMetricsService.recordFiberStart: (context: Context.Context<never>) => voidrecordFiberStart: (context: Context.Context<never>(parameter) context: {
mapUnsafe: ReadonlyMap<string, any>;
mutable: boolean;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
context: import ContextContext.type Context.Context = /*unresolved*/ anyContext<never>) => void
readonly FiberRuntimeMetricsService.recordFiberEnd: (context: Context.Context<never>, exit: Exit<unknown, unknown>) => voidrecordFiberEnd: (context: Context.Context<never>(parameter) context: {
mapUnsafe: ReadonlyMap<string, any>;
mutable: boolean;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
context: import ContextContext.type Context.Context = /*unresolved*/ anyContext<never>, exit: Exit<unknown, unknown>exit: import ExitExit<unknown, unknown>) => void
}Referenced by 2 symbols