<Self>(tag: TelemetryTag<Self>, options?: TelemetryOptions): Layer.Layer<
| Self
| Hyperlink.Local<Self>
| Handler<"snapshot">
| Handler<"live">
| Handler<"inFlightByNode">
| Handler<"fleetInFlight">,
never,
Scope.Scope | Hyperlink.PeersId<Self> | Hyperlink.SelfNodeId<Self>
>Serve this Telemetry resource and grant its local instance from one materialization —
counterpart to Hyperlink.serve. Forks one sampling fiber, mounts leaf + fleet handlers,
and grants Self | Local<Self>. Requires the mesh capability (alone or
Hyperlink.peersLayer):
Telemetry.serve(FleetMetrics).pipe(
Layer.provide(Hyperlink.peersLayer(FleetMetrics, DropletEast)),
)export const const serve: <Self>(
tag: TelemetryTag<Self>,
options?: TelemetryOptions
) => Layer.Layer<
| Self
| Hyperlink.Local<Self>
| Handler<"snapshot">
| Handler<"live">
| Handler<"inFlightByNode">
| Handler<"fleetInFlight">,
never,
| Scope.Scope
| Hyperlink.PeersId<Self>
| Hyperlink.SelfNodeId<Self>
>
Serve this Telemetry resource and grant its local instance from one materialization —
counterpart to
Hyperlink.serve
. Forks one sampling fiber, mounts leaf + fleet handlers,
and grants Self | Local<Self>. Requires the mesh capability (
alone
or
Telemetry.serve(FleetMetrics).pipe(
Layer.provide(Hyperlink.peersLayer(FleetMetrics, DropletEast)),
)
serve = <function (type parameter) Self in <Self>(tag: TelemetryTag<Self>, options?: TelemetryOptions): Layer.Layer<Self | Hyperlink.Local<Self> | Handler<"snapshot"> | Handler<"live"> | Handler<...> | Handler<...>, never, Scope.Scope | ... 1 more ... | Hyperlink.SelfNodeId<...>>Self>(
tag: TelemetryTag<Self>(parameter) tag: {
key: Identifier;
Service: {
snapshot: Effect.Effect<MetricsSnapshot, never, never>;
live: Stream.Stream<MetricsSnapshot, never, never>;
inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>;
fleetInFlight: Effect.Effect<number, never, never>;
};
description: string | undefined;
of: (this: void, self: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; read…;
context: (self: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly fleetIn…;
use: (f: (service: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly …;
useSync: (f: (service: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly …;
Identifier: Identifier;
stack: string | undefined;
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;
}
tag: type TelemetryTag<Self> = Hyperlink.HyperlinkTag<Self, {
snapshot: Hyperlink.Method<undefined, typeof MetricsSnapshot, Schema.Never, false, Hyperlink.MethodAnnotations & {
description: string;
}, Hyperlink.Derive>;
live: Hyperlink.Method<undefined, typeof MetricsSnapshot, Schema.Never, true, Hyperlink.MethodAnnotations & {
description: string;
}, Hyperlink.Derive>;
inFlightByNode: Hyperlink.Marked<Hyperlink.Method<undefined, Schema.$Record<Schema.String, Schema.Number>, Schema.Never, false, Hyperlink.MethodAnnotations & {
...;
}, Hyperlink.Derive>, {
...;
}>;
fleetInFlight: Hyperlink.Marked<...>;
}, {
...;
}>
A Telemetry instance tag.
TelemetryTag<function (type parameter) Self in <Self>(tag: TelemetryTag<Self>, options?: TelemetryOptions): Layer.Layer<Self | Hyperlink.Local<Self> | Handler<"snapshot"> | Handler<"live"> | Handler<...> | Handler<...>, never, Scope.Scope | ... 1 more ... | Hyperlink.SelfNodeId<...>>Self>,
options: TelemetryOptionsoptions?: TelemetryOptions,
) => resourceServe<Self, S extends Spec, R = never>(tag: HyperlinkTag<Self, S>, impl: ImplWithDefaultOverrides<S> | Driver<S, R> | Effect.Effect<ImplWithDefaultOverrides<S> | Driver<S, R>, never, R>): Layer.Layer<Self | Local<Self> | HandlerContextOf<S>, ValueErrorsOf<S>, R>Expose a
Tag
's implementation as an RPC server layer — the served counterpart of
layer
. Pair it with
Node.httpServer
/
Node.wsServer
(or
listen
) to
put it on a transport, and dial it with
client
/
connect
.
Shared-Spec instances (Tag(wireKey, spec) → Factory<Self>()(instanceKey)) share one
RpcGroup: Layer.mergeAll(serve(A, …), serve(B, …)) mounts handlers once and routes by
the per-call key header.
resourceServe(tag: TelemetryTag<Self>(parameter) tag: {
key: Identifier;
Service: {
snapshot: Effect.Effect<MetricsSnapshot, never, never>;
live: Stream.Stream<MetricsSnapshot, never, never>;
inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>;
fleetInFlight: Effect.Effect<number, never, never>;
};
description: string | undefined;
of: (this: void, self: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; read…;
context: (self: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly fleetIn…;
use: (f: (service: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly …;
useSync: (f: (service: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly …;
Identifier: Identifier;
stack: string | undefined;
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;
}
tag, const buildImpl: <Self>(
tag: TelemetryTag<Self>,
options?: TelemetryOptions
) => Effect.Effect<
{
readonly snapshot: Effect.Effect<MetricsSnapshot>
readonly live: Stream.Stream<MetricsSnapshot>
readonly inFlightByNode: Effect.Effect<
Readonly<Record<string, number>>
>
readonly fleetInFlight: Effect.Effect<number>
},
never,
Scope.Scope | PeersId<Self> | SelfNodeId<Self>
>
The served impl: leaf snapshot/live plus fleet folds over peers' leaf snapshots.
Resolves
Hyperlink.peers
/
Hyperlink.selfNode
once; members close over them.
buildImpl(tag: TelemetryTag<Self>(parameter) tag: {
key: Identifier;
Service: {
snapshot: Effect.Effect<MetricsSnapshot, never, never>;
live: Stream.Stream<MetricsSnapshot, never, never>;
inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>;
fleetInFlight: Effect.Effect<number, never, never>;
};
description: string | undefined;
of: (this: void, self: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; read…;
context: (self: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly fleetIn…;
use: (f: (service: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly …;
useSync: (f: (service: { readonly snapshot: Effect.Effect<MetricsSnapshot, never, never>; readonly live: Stream.Stream<MetricsSnapshot, never, never>; readonly inFlightByNode: Effect.Effect<{ readonly [x: string]: number }, never, never>; readonly …;
Identifier: Identifier;
stack: string | undefined;
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;
}
tag, options: TelemetryOptionsoptions));