Hyperlinkv0.9.0-beta.0

WorkPool

WorkPool.servefunctionsrc/WorkPool.ts:2137
<
  Self,
  F extends QueueItemFields = QueueItemFields,
  R = never,
  RR = never,
  Success extends Schema.Top = Schema.Void,
  Error extends Schema.Top = Schema.Never
>(
  tag: QueueTagFor<Self, F, Success, Error>,
  config: QueueVerbConfig<F, QueueErrorValueOf<Error>, R, RR, Success>
): Layer.Layer<
  | Self
  | Local<Self>
  | HandlerContextOf<QueueInstanceSpec<F>>
  | Store.Storage,
  never,
  R | RR
>
<
  Self,
  F extends PriorityItemFields = PriorityItemFields,
  E = never,
  R = never,
  RR = never
>(
  tag: HyperlinkTag<Self, PriorityInstanceSpec<F>>,
  config: PriorityLayerConfig<Schema.Struct<F>["Type"], E, R, RR>
): Layer.Layer<
  | Self
  | Local<Self>
  | HandlerContextOf<PriorityInstanceSpec<F>>
  | Store.Storage,
  never,
  R | RR
>

Serve this queue and grant its local instance from one materialization — run the worker / refill / persist engine behind the tag, mount its RPC handlers, register into Hyperlink.servedHyperServicesLayer, and grant Self | Local<Self> so co-located code can yield* Tag. The served cells are the in-process instance (one engine, one peersLayer); the worker requirement R is preserved for per-HyperService Layer.provide. This is the queue's counterpart to Hyperlink.serve; a served-only gateway uses serveRemote.

Node.httpServer([
  WorkPool.serve(RosterQueue, { effect, itemSchema }),
  Daemon.serve(SeasonMatches, { effect }),
]).pipe(Layer.provide(NodeHttpServer.layer({ port: 3001 })));
layers & servingHyperlink.servedHyperServicesLayerHyperlink.serveserveRemote
Source src/WorkPool.ts:213751 lines
export function serve<
  Self,
  F extends QueueItemFields = QueueItemFields,
  R = never,
  RR = never,
  Success extends Schema.Top = typeof Schema.Void,
  Error extends Schema.Top = typeof Schema.Never,
>(
  tag: QueueTagFor<Self, F, Success, Error>,
  config: QueueVerbConfig<F, QueueErrorValueOf<Error>, R, RR, Success>,
): Layer.Layer<
  Self | Local<Self> | HandlerContextOf<QueueInstanceSpec<F>> | Store.Storage,
  never,
  R | RR
>;
export function serve<
  Self,
  F extends PriorityItemFields = PriorityItemFields,
  E = never,
  R = never,
  RR = never,
>(
  tag: HyperlinkTag<Self, PriorityInstanceSpec<F>>,
  config: PriorityLayerConfig<Schema.Struct<F>["Type"], E, R, RR>,
): Layer.Layer<
  Self | Local<Self> | HandlerContextOf<PriorityInstanceSpec<F>> | Store.Storage,
  never,
  R | RR
>;
export function serve(tag: AnyPoolTag, config: unknown): Layer.Layer<unknown, never, unknown> {
  return isPriorityTag(tag)
    ? withDefaultMemory(
        Layer.unwrap(
          Effect.map(
            buildPriorityImpl(
              tag,
              config as PriorityLayerConfig<Schema.Struct<PriorityItemFields>["Type"], never, never, never>,
            ),
            (built) => Hyperlink.serve(tag, built),
          ),
        ),
      )
    : withDefaultMemory(
        Layer.unwrap(
          Effect.map(
            buildQueueImpl(tag, config as QueueVerbConfig<QueueItemFields, unknown, never, never, Schema.Top>),
            (built) => Hyperlink.serve(tag, built),
          ),
        ),
      );
}
Referenced by 1 symbols