| import * as Context from "../../Context.ts"; | |
| import type { Input } from "../../Duration.ts"; | |
| import * as Effect from "../../Effect.ts"; | |
| import * as Layer from "../../Layer.ts"; | |
| import * as Schedule from "../../Schedule.ts"; | |
| import * as Scope from "../../Scope.ts"; | |
| import * as Stream from "../../Stream.ts"; | |
| import type * as Rpc from "../rpc/Rpc.ts"; | |
| import * as RpcClient from "../rpc/RpcClient.ts"; | |
| import type { MailboxFull, PersistenceError } from "./ClusterError.ts"; | |
| import { AlreadyProcessingMessage, EntityNotAssignedToRunner } from "./ClusterError.ts"; | |
| import type { CurrentAddress, CurrentRunnerAddress, Entity, HandlersFrom } from "./Entity.ts"; | |
| import type { EntityId } from "./EntityId.ts"; | |
| import * as Message from "./Message.ts"; | |
| import * as MessageStorage from "./MessageStorage.ts"; | |
| import * as RunnerHealth from "./RunnerHealth.ts"; | |
| import { Runners } from "./Runners.ts"; | |
| import { RunnerStorage } from "./RunnerStorage.ts"; | |
| import type { ShardId } from "./ShardId.ts"; | |
| import { ShardingConfig } from "./ShardingConfig.ts"; | |
| import { type ShardingRegistrationEvent } from "./ShardingRegistrationEvent.ts"; | |
| import * as Snowflake from "./Snowflake.ts"; | |
| declare const Sharding_base: Context.ServiceClass<Sharding, "effect/cluster/Sharding", { | |
| /** | |
| * Returns a stream of events that occur when the runner registers entities or | |
| * singletons. | |
| */ | |
| readonly getRegistrationEvents: Stream.Stream<ShardingRegistrationEvent>; | |
| /** | |
| * Returns the `ShardId` of the shard to which the entity at the specified | |
| * `address` is assigned. | |
| */ | |
| readonly getShardId: (entityId: EntityId, group: string) => ShardId; | |
| /** | |
| * Returns `true` if the specified `shardId` is assigned to this runner. | |
| */ | |
| readonly hasShardId: (shardId: ShardId) => boolean; | |
| /** | |
| * Generate a Snowflake ID that is unique to this runner. | |
| */ | |
| readonly getSnowflake: Effect.Effect<Snowflake.Snowflake>; | |
| /** | |
| * Returns `true` if sharding is shutting down, `false` otherwise. | |
| */ | |
| readonly isShutdown: Effect.Effect<boolean>; | |
| /** | |
| * Constructs a `RpcClient` which can be used to send messages to the | |
| * specified `Entity`. | |
| */ | |
| readonly makeClient: <Type extends string, Rpcs extends Rpc.Any>(entity: Entity<Type, Rpcs>) => Effect.Effect<(entityId: string) => RpcClient.RpcClient.From<Rpcs, MailboxFull | AlreadyProcessingMessage | PersistenceError>>; | |
| /** | |
| * Registers a new entity with the runner. | |
| */ | |
| readonly registerEntity: <Type extends string, Rpcs extends Rpc.Any, Handlers extends HandlersFrom<Rpcs>, RX>(entity: Entity<Type, Rpcs>, handlers: Effect.Effect<Handlers, never, RX>, options?: { | |
| readonly maxIdleTime?: Input | undefined; | |
| readonly concurrency?: number | "unbounded" | undefined; | |
| readonly mailboxCapacity?: number | "unbounded" | undefined; | |
| readonly disableFatalDefects?: boolean | undefined; | |
| readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined; | |
| readonly spanAttributes?: Record<string, string> | undefined; | |
| }) => Effect.Effect<void, never, Scope.Scope | Rpc.ServicesServer<Rpcs> | Rpc.Middleware<Rpcs> | Exclude<RX, Scope.Scope | CurrentAddress | CurrentRunnerAddress>>; | |
| /** | |
| * Registers a new singleton with the runner. | |
| */ | |
| readonly registerSingleton: <E, R>(name: string, run: Effect.Effect<void, E, R>, options?: { | |
| readonly shardGroup?: string | undefined; | |
| }) => Effect.Effect<void, never, R | Scope.Scope>; | |
| /** | |
| * Sends a message to the specified entity. | |
| */ | |
| readonly send: (message: Message.Incoming<any>) => Effect.Effect<void, EntityNotAssignedToRunner | MailboxFull | AlreadyProcessingMessage>; | |
| /** | |
| * Sends an outgoing message | |
| */ | |
| readonly sendOutgoing: (message: Message.Outgoing<any>, discard: boolean) => Effect.Effect<void, MailboxFull | AlreadyProcessingMessage | PersistenceError>; | |
| /** | |
| * Notify sharding that a message has been persisted to storage. | |
| */ | |
| readonly notify: (message: Message.Incoming<any>, options?: { | |
| readonly waitUntilRead?: boolean | undefined; | |
| }) => Effect.Effect<void, EntityNotAssignedToRunner | AlreadyProcessingMessage>; | |
| /** | |
| * Reset the state of a message | |
| */ | |
| readonly reset: (requestId: Snowflake.Snowflake) => Effect.Effect<boolean>; | |
| /** | |
| * Trigger a storage read, which will read all unprocessed messages. | |
| */ | |
| readonly pollStorage: Effect.Effect<void>; | |
| /** | |
| * Retrieves the active entity count for the current runner. | |
| */ | |
| readonly activeEntityCount: Effect.Effect<number>; | |
| }>; | |
| /** | |
| * Service that registers entities and singletons, routes messages to owned | |
| * shards, generates runner-local snowflake ids, and polls | |
| * storage for persisted work. | |
| * | |
| * **When to use** | |
| * | |
| * Use to access or provide cluster routing, shard ownership, entity | |
| * registration, singleton registration, and persisted-work polling. | |
| * | |
| * @category services | |
| * @since 4.0.0 | |
| */ | |
| export declare class Sharding extends Sharding_base { | |
| } | |
| /** | |
| * Layer that constructs the `Sharding` service from sharding configuration, | |
| * runner communication, message storage, runner storage, runner health, the | |
| * snowflake generator, and the entity reaper. | |
| * | |
| * **When to use** | |
| * | |
| * Use when you need to assemble a cluster sharding runtime from explicit | |
| * sharding configuration, runner communication, message storage, runner | |
| * storage, and runner health layers. | |
| * | |
| * **Details** | |
| * | |
| * The layer provides the `Sharding` service and installs its own snowflake | |
| * generator and entity reaper. Callers still provide `ShardingConfig`, | |
| * `Runners`, `MessageStorage`, `RunnerStorage`, and `RunnerHealth`. | |
| * | |
| * **Gotchas** | |
| * | |
| * Persisted messages require a non-no-op `MessageStorage`; if this layer is | |
| * provided with `MessageStorage.layerNoop`, persisted sends defect. | |
| * | |
| * @see {@link Sharding} for the service provided by this layer | |
| * | |
| * @category layers | |
| * @since 4.0.0 | |
| */ | |
| export declare const layer: Layer.Layer<Sharding, never, ShardingConfig | Runners | MessageStorage.MessageStorage | RunnerStorage | RunnerHealth.RunnerHealth>; | |
| export {}; | |
| //# sourceMappingURL=Sharding.d.ts.map |
Xet Storage Details
- Size:
- 6.21 kB
- Xet hash:
- 91e44b3ef2e2f66b14352e006dd2304dfac468201c24ff888306d630155dfb17
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.