Hyperlinkv0.9.0-beta.0

WorkPool

WorkPool.serveRemotefunctionsrc/WorkPool.ts:2067
<
  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<HandlerContextOf<QueueInstanceSpec<F>>, 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<HandlerContextOf<PriorityInstanceSpec<F>>, never, R | RR>

Serve this queue remotely (served-only) — run the worker / refill / persist engine behind the tag, mount its RPC handlers, and register into Hyperlink.servedHyperServicesLayer, without granting the local instance (no yield* Tag in the serving process). The engine's worker requirement R is preserved, so a per-HyperService Layer.provide discharges it in isolation — the queue's counterpart to Hyperlink.serveRemote.

Reach for this (with Node.httpServer) for a pure gateway/edge that exposes the queue for remote clients but never consumes it locally; use serve when the serving node also drives it.

Node.httpServer([
  WorkPool.serveRemote(RosterImportQueue, rosterCfg).pipe(Layer.provide(emptyHookSource)),
  WorkPool.serveRemote(MediaImportQueue,  mediaCfg).pipe(Layer.provide(emptyHookSource)),
]).pipe(Layer.provide(NodeHttpServer.layer(() => createServer(), { port })));
layers & servingHyperlink.servedHyperServicesLayerHyperlink.serveRemoteNode.httpServerserve
Source src/WorkPool.ts:206743 lines
export function serveRemote<
  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<HandlerContextOf<QueueInstanceSpec<F>>, never, R | RR>;
export function serveRemote<
  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<HandlerContextOf<PriorityInstanceSpec<F>>, never, R | RR>;
export function serveRemote(tag: AnyPoolTag, config: unknown): Layer.Any {
  return isPriorityTag(tag)
    ? withDefaultMemory(
        Layer.unwrap(
          Effect.map(
            buildPriorityImpl(
              tag,
              config as PriorityLayerConfig<Schema.Struct<PriorityItemFields>["Type"], never, never, never>,
            ),
            (built) => Hyperlink.serveRemoteDriver(tag, built),
          ),
        ),
      )
    : withDefaultMemory(
        Layer.unwrap(
          Effect.map(
            buildQueueImpl(tag, config as QueueVerbConfig<QueueItemFields, unknown, never, never, Schema.Top>),
            (built) => Hyperlink.serveRemoteDriver(tag, built),
          ),
        ),
      );
}
Referenced by 1 symbols