Worker overview
Added in v1.0.0
Table of contents
- constructors
- layers
- models
- BackingWorker (interface)
- BackingWorker (namespace)
- PlatformWorker (interface)
- SerializedWorker (interface)
- SerializedWorker (namespace)
- SerializedWorkerPool (interface)
- SerializedWorkerPool (namespace)
- Worker (interface)
- Worker (namespace)
- WorkerManager (interface)
- WorkerPool (interface)
- WorkerPool (namespace)
- WorkerQueue (interface)
- tags
- type ids
constructors
makeManager
Signature
export declare const makeManager: Effect.Effect<PlatformWorker, never, WorkerManager>
Added in v1.0.0
makePool
Signature
export declare const makePool: <W>() => <I, E, O>(
options: WorkerPool.Options<I, W>
) => Effect.Effect<Scope.Scope | WorkerManager, never, WorkerPool<I, E, O>>
Added in v1.0.0
makePoolLayer
Signature
export declare const makePoolLayer: <W>(
managerLayer: Layer.Layer<never, never, WorkerManager>
) => <Tag, I, E, O>(
tag: Context.Tag<Tag, WorkerPool<I, E, O>>,
options: WorkerPool.Options<I, W>
) => Layer.Layer<never, never, Tag>
Added in v1.0.0
makePoolSerialized
Signature
export declare const makePoolSerialized: <W>() => <I extends Schema.TaggedRequest.Any>(
options: SerializedWorkerPool.Options<I, W>
) => Effect.Effect<Scope.Scope | WorkerManager, never, SerializedWorkerPool<I>>
Added in v1.0.0
makeSerialized
Signature
export declare const makeSerialized: <I extends Schema.TaggedRequest.Any, W = unknown>(
options: SerializedWorker.Options<I, W>
) => Effect.Effect<Scope.Scope | WorkerManager, WorkerError, SerializedWorker<I>>
Added in v1.0.0
layers
layerManager
Signature
export declare const layerManager: Layer.Layer<PlatformWorker, never, WorkerManager>
Added in v1.0.0
makePoolSerializedLayer
Signature
export declare const makePoolSerializedLayer: <W>(
managerLayer: Layer.Layer<never, never, WorkerManager>
) => <Tag, I extends Schema.TaggedRequest.Any>(
tag: Context.Tag<Tag, SerializedWorkerPool<I>>,
options: SerializedWorkerPool.Options<I, W>
) => Layer.Layer<never, never, Tag>
Added in v1.0.0
models
BackingWorker (interface)
Signature
export interface BackingWorker<I, O> {
readonly fiber: Fiber.Fiber<WorkerError, never>
readonly send: (message: I, transfers?: ReadonlyArray<unknown>) => Effect.Effect<never, WorkerError, void>
readonly queue: Queue.Dequeue<BackingWorker.Message<O>>
}
Added in v1.0.0
BackingWorker (namespace)
Added in v1.0.0
Message (type alias)
Signature
export type Message<O> = readonly [ready: 0] | readonly [data: 1, O]
Added in v1.0.0
PlatformWorker (interface)
Signature
export interface PlatformWorker {
readonly [PlatformWorkerTypeId]: PlatformWorkerTypeId
readonly spawn: <I, O>(worker: unknown) => Effect.Effect<Scope.Scope, WorkerError, BackingWorker<I, O>>
}
Added in v1.0.0
SerializedWorker (interface)
Signature
export interface SerializedWorker<I extends Schema.TaggedRequest.Any> {
readonly id: number
readonly execute: <Req extends I>(
message: Req
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
: never
readonly executeEffect: <Req extends I>(
message: Req
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
: never
}
Added in v1.0.0
SerializedWorker (namespace)
Added in v1.0.0
Options (interface)
Signature
export interface Options<I, W = unknown> {
readonly spawn: (id: number) => W
readonly permits?: number
readonly queue?: WorkerQueue<I>
readonly initialMessage?: LazyArg<I>
}
Added in v1.0.0
SerializedWorkerPool (interface)
Signature
export interface SerializedWorkerPool<I extends Schema.TaggedRequest.Any> {
readonly backing: Pool.Pool<WorkerError, SerializedWorker<I>>
readonly broadcast: <Req extends I>(
message: Req
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer _A>
? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, void>
: never
readonly execute: <Req extends I>(
message: Req
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
: never
readonly executeEffect: <Req extends I>(
message: Req
) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
: never
}
Added in v1.0.0
SerializedWorkerPool (namespace)
Added in v1.0.0
Options (type alias)
Signature
export type Options<I, W = unknown> = SerializedWorker.Options<I, W> &
(
| {
readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
readonly size: number
}
| {
readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
readonly minSize: number
readonly maxSize: number
readonly timeToLive: Duration.DurationInput
}
)
Added in v1.0.0
Worker (interface)
Signature
export interface Worker<I, E, O> {
readonly id: number
readonly execute: (message: I) => Stream.Stream<never, E | WorkerError, O>
readonly executeEffect: (message: I) => Effect.Effect<never, E | WorkerError, O>
}
Added in v1.0.0
Worker (namespace)
Added in v1.0.0
Options (interface)
Signature
export interface Options<I, W = unknown> {
readonly spawn: (id: number) => W
readonly encode?: (message: I) => Effect.Effect<never, WorkerError, unknown>
readonly transfers?: (message: I) => ReadonlyArray<unknown>
readonly permits?: number
readonly queue?: WorkerQueue<I>
readonly initialMessage?: LazyArg<I>
}
Added in v1.0.0
Request (type alias)
Signature
export type Request<I = unknown> = readonly [id: number, data: 0, I] | readonly [id: number, interrupt: 1]
Added in v1.0.0
Response (type alias)
Signature
export type Response<E, O = unknown> =
| readonly [id: number, data: 0, ReadonlyArray<O>]
| readonly [id: number, end: 1]
| readonly [id: number, end: 1, ReadonlyArray<O>]
| readonly [id: number, error: 2, E]
| readonly [id: number, defect: 3, unknown]
Added in v1.0.0
WorkerManager (interface)
Signature
export interface WorkerManager {
readonly [WorkerManagerTypeId]: WorkerManagerTypeId
readonly spawn: <I, E, O>(options: Worker.Options<I>) => Effect.Effect<Scope.Scope, WorkerError, Worker<I, E, O>>
}
Added in v1.0.0
WorkerPool (interface)
Signature
export interface WorkerPool<I, E, O> {
readonly backing: Pool.Pool<WorkerError, Worker<I, E, O>>
readonly broadcast: (message: I) => Effect.Effect<never, E | WorkerError, void>
readonly execute: (message: I) => Stream.Stream<never, E | WorkerError, O>
readonly executeEffect: (message: I) => Effect.Effect<never, E | WorkerError, O>
}
Added in v1.0.0
WorkerPool (namespace)
Added in v1.0.0
Options (type alias)
Signature
export type Options<I, W = unknown> = Worker.Options<I, W> &
(
| {
readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
readonly size: number
}
| {
readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
readonly minSize: number
readonly maxSize: number
readonly timeToLive: Duration.DurationInput
}
)
Added in v1.0.0
WorkerQueue (interface)
Signature
export interface WorkerQueue<I> {
readonly offer: (id: number, item: I) => Effect.Effect<never, never, void>
readonly take: Effect.Effect<never, never, readonly [id: number, item: I]>
readonly shutdown: Effect.Effect<never, never, void>
}
Added in v1.0.0
tags
PlatformWorker
Signature
export declare const PlatformWorker: Context.Tag<PlatformWorker, PlatformWorker>
Added in v1.0.0
WorkerManager
Signature
export declare const WorkerManager: Context.Tag<WorkerManager, WorkerManager>
Added in v1.0.0
type ids
PlatformWorkerTypeId
Signature
export declare const PlatformWorkerTypeId: typeof PlatformWorkerTypeId
Added in v1.0.0
PlatformWorkerTypeId (type alias)
Signature
export type PlatformWorkerTypeId = typeof PlatformWorkerTypeId
Added in v1.0.0
WorkerManagerTypeId
Signature
export declare const WorkerManagerTypeId: typeof WorkerManagerTypeId
Added in v1.0.0
WorkerManagerTypeId (type alias)
Signature
export type WorkerManagerTypeId = typeof WorkerManagerTypeId
Added in v1.0.0