ShardManager.ts overview
Since v1.0.0
Exports Grouped by Category
Client
ShardManagerClient (class)
Represents a client which can be used to communicate with the ShardManager
.
Signature
declare class ShardManagerClient
Since v1.0.0
layerClientLocal
Signature
declare const layerClientLocal: Layer.Layer<ShardManagerClient, never, ShardingConfig>
Since v1.0.0
layerClientRpc
Signature
declare const layerClientRpc: Layer.Layer<ShardManagerClient, never, ShardingConfig | RpcClientProtocol>
Since v1.0.0
makeClientLocal
Signature
declare const makeClientLocal: Effect.Effect<
{
readonly register: (address: RunnerAddress) => Effect.Effect<MachineId.MachineId>
readonly unregister: (address: RunnerAddress) => Effect.Effect<void>
readonly notifyUnhealthyRunner: (address: RunnerAddress) => Effect.Effect<void>
readonly getAssignments: Effect.Effect<ReadonlyMap<ShardId, Option.Option<RunnerAddress>>>
readonly shardingEvents: Effect.Effect<Mailbox.ReadonlyMailbox<ShardingEvent>, never, Scope>
readonly getTime: Effect.Effect<number>
},
never,
ShardingConfig
>
Since v1.0.0
makeClientRpc
Signature
declare const makeClientRpc: Effect.Effect<
{
readonly register: (address: RunnerAddress) => Effect.Effect<MachineId.MachineId>
readonly unregister: (address: RunnerAddress) => Effect.Effect<void>
readonly notifyUnhealthyRunner: (address: RunnerAddress) => Effect.Effect<void>
readonly getAssignments: Effect.Effect<ReadonlyMap<ShardId, Option.Option<RunnerAddress>>>
readonly shardingEvents: Effect.Effect<Mailbox.ReadonlyMailbox<ShardingEvent>, never, Scope>
readonly getTime: Effect.Effect<number>
},
never,
Scope | ShardingConfig | RpcClient.Protocol
>
Since v1.0.0
Config
Config (class)
Signature
declare class Config
Since v1.0.0
configConfig
Signature
declare const configConfig: Config_.Config<{
readonly rebalanceDebounce: Duration.DurationInput
readonly rebalanceInterval: Duration.DurationInput
readonly rebalanceRetryInterval: Duration.DurationInput
readonly rebalanceRate: number
readonly persistRetryInterval: Duration.DurationInput
readonly persistRetryCount: number
readonly runnerHealthCheckInterval: Duration.DurationInput
readonly runnerPingTimeout: Duration.DurationInput
}>
Since v1.0.0
configFromEnv
Signature
declare const configFromEnv: Effect.Effect<
{
readonly rebalanceDebounce: Duration.DurationInput
readonly rebalanceInterval: Duration.DurationInput
readonly rebalanceRetryInterval: Duration.DurationInput
readonly rebalanceRate: number
readonly persistRetryInterval: Duration.DurationInput
readonly persistRetryCount: number
readonly runnerHealthCheckInterval: Duration.DurationInput
readonly runnerPingTimeout: Duration.DurationInput
},
ConfigError,
never
>
Since v1.0.0
layerConfig
Signature
declare const layerConfig: (config?: Partial<Config["Type"]>) => Layer.Layer<Config>
Since v1.0.0
layerConfigFromEnv
Signature
declare const layerConfigFromEnv: Layer.Layer<Config, ConfigError, never>
Since v1.0.0
Constructors
make
Signature
declare const make: Effect.Effect<
{
readonly getAssignments: Effect.Effect<ReadonlyMap<ShardId, Option.Option<RunnerAddress>>>
readonly shardingEvents: Effect.Effect<Queue.Dequeue<ShardingEvent>, never, Scope>
readonly register: (runner: Runner) => Effect.Effect<MachineId.MachineId>
readonly unregister: (address: RunnerAddress) => Effect.Effect<void>
readonly rebalance: (immediate: boolean) => Effect.Effect<void>
readonly notifyUnhealthyRunner: (address: RunnerAddress) => Effect.Effect<void>
readonly checkRunnerHealth: Effect.Effect<void>
},
never,
Scope | ShardStorage | ShardingConfig | RunnerHealth | Config | Runners
>
Since v1.0.0
Rpcs
Rpcs (class)
The messaging protocol for the ShardManager
.
Signature
declare class Rpcs
Since v1.0.0
Server
layerServer
Signature
declare const layerServer: Layer.Layer<never, never, ShardManager | RpcServer.Protocol>
Since v1.0.0
layerServerHandlers
Signature
declare const layerServerHandlers: Layer.Layer<
| Rpc.Handler<"Register">
| Rpc.Handler<"Unregister">
| Rpc.Handler<"NotifyUnhealthyRunner">
| Rpc.Handler<"GetAssignments">
| Rpc.Handler<"ShardingEvents">
| Rpc.Handler<"GetTime">,
never,
ShardManager
>
Since v1.0.0
layer
layer
Signature
declare const layer: Layer.Layer<ShardManager, never, ShardStorage | ShardingConfig | RunnerHealth | Config | Runners>
Since v1.0.0
models
ShardManager (class)
Signature
declare class ShardManager
Since v1.0.0
ShardingEvent
Signature
declare const ShardingEvent: {
readonly StreamStarted: Data.Case.Constructor<{ readonly _tag: "StreamStarted" }, "_tag">
readonly ShardsAssigned: Data.Case.Constructor<
{ readonly _tag: "ShardsAssigned"; readonly address: RunnerAddress; readonly shards: ReadonlyArray<ShardId> },
"_tag"
>
readonly ShardsUnassigned: Data.Case.Constructor<
{ readonly _tag: "ShardsUnassigned"; readonly address: RunnerAddress; readonly shards: ReadonlyArray<ShardId> },
"_tag"
>
readonly RunnerRegistered: Data.Case.Constructor<
{ readonly _tag: "RunnerRegistered"; readonly address: RunnerAddress },
"_tag"
>
readonly RunnerUnregistered: Data.Case.Constructor<
{ readonly _tag: "RunnerUnregistered"; readonly address: RunnerAddress },
"_tag"
>
readonly $is: <
Tag extends "StreamStarted" | "ShardsAssigned" | "ShardsUnassigned" | "RunnerRegistered" | "RunnerUnregistered"
>(
tag: Tag
) => (
u: unknown
) => u is
| Extract<{ readonly _tag: "StreamStarted" }, { readonly _tag: Tag }>
| Extract<
{ readonly _tag: "ShardsAssigned"; readonly address: RunnerAddress; readonly shards: ReadonlyArray<ShardId> },
{ readonly _tag: Tag }
>
| Extract<
{ readonly _tag: "ShardsUnassigned"; readonly address: RunnerAddress; readonly shards: ReadonlyArray<ShardId> },
{ readonly _tag: Tag }
>
| Extract<{ readonly _tag: "RunnerRegistered"; readonly address: RunnerAddress }, { readonly _tag: Tag }>
| Extract<{ readonly _tag: "RunnerUnregistered"; readonly address: RunnerAddress }, { readonly _tag: Tag }>
readonly $match: {
<
Cases extends {
readonly StreamStarted: (args: { readonly _tag: "StreamStarted" }) => any
readonly ShardsAssigned: (args: {
readonly _tag: "ShardsAssigned"
readonly address: RunnerAddress
readonly shards: ReadonlyArray<ShardId>
}) => any
readonly ShardsUnassigned: (args: {
readonly _tag: "ShardsUnassigned"
readonly address: RunnerAddress
readonly shards: ReadonlyArray<ShardId>
}) => any
readonly RunnerRegistered: (args: { readonly _tag: "RunnerRegistered"; readonly address: RunnerAddress }) => any
readonly RunnerUnregistered: (args: {
readonly _tag: "RunnerUnregistered"
readonly address: RunnerAddress
}) => any
}
>(
cases: Cases
): (
value:
| { readonly _tag: "StreamStarted" }
| { readonly _tag: "ShardsAssigned"; readonly address: RunnerAddress; readonly shards: ReadonlyArray<ShardId> }
| {
readonly _tag: "ShardsUnassigned"
readonly address: RunnerAddress
readonly shards: ReadonlyArray<ShardId>
}
| { readonly _tag: "RunnerRegistered"; readonly address: RunnerAddress }
| { readonly _tag: "RunnerUnregistered"; readonly address: RunnerAddress }
) => Unify<
ReturnType<
Cases["StreamStarted" | "ShardsAssigned" | "ShardsUnassigned" | "RunnerRegistered" | "RunnerUnregistered"]
>
>
<
Cases extends {
readonly StreamStarted: (args: { readonly _tag: "StreamStarted" }) => any
readonly ShardsAssigned: (args: {
readonly _tag: "ShardsAssigned"
readonly address: RunnerAddress
readonly shards: ReadonlyArray<ShardId>
}) => any
readonly ShardsUnassigned: (args: {
readonly _tag: "ShardsUnassigned"
readonly address: RunnerAddress
readonly shards: ReadonlyArray<ShardId>
}) => any
readonly RunnerRegistered: (args: { readonly _tag: "RunnerRegistered"; readonly address: RunnerAddress }) => any
readonly RunnerUnregistered: (args: {
readonly _tag: "RunnerUnregistered"
readonly address: RunnerAddress
}) => any
}
>(
value:
| { readonly _tag: "StreamStarted" }
| { readonly _tag: "ShardsAssigned"; readonly address: RunnerAddress; readonly shards: ReadonlyArray<ShardId> }
| {
readonly _tag: "ShardsUnassigned"
readonly address: RunnerAddress
readonly shards: ReadonlyArray<ShardId>
}
| { readonly _tag: "RunnerRegistered"; readonly address: RunnerAddress }
| { readonly _tag: "RunnerUnregistered"; readonly address: RunnerAddress },
cases: Cases
): Unify<
ReturnType<
Cases["StreamStarted" | "ShardsAssigned" | "ShardsUnassigned" | "RunnerRegistered" | "RunnerUnregistered"]
>
>
}
}
Since v1.0.0
ShardingEvent (type alias)
Signature
type ShardingEvent = Data.TaggedEnum<{
StreamStarted: {}
ShardsAssigned: {
address: RunnerAddress
shards: ReadonlyArray<ShardId>
}
ShardsUnassigned: {
address: RunnerAddress
shards: ReadonlyArray<ShardId>
}
RunnerRegistered: { address: RunnerAddress }
RunnerUnregistered: { address: RunnerAddress }
}>
Since v1.0.0
ShardingEventSchema
Signature
declare const ShardingEventSchema: Schema.Union<
[
Schema.TaggedStruct<"StreamStarted", {}>,
Schema.TaggedStruct<
"ShardsAssigned",
{ address: typeof RunnerAddress; shards: Schema.Array$<Schema.brand<typeof Schema.Int, "ShardId">> }
>,
Schema.TaggedStruct<
"ShardsUnassigned",
{ address: typeof RunnerAddress; shards: Schema.Array$<Schema.brand<typeof Schema.Int, "ShardId">> }
>,
Schema.TaggedStruct<"RunnerRegistered", { address: typeof RunnerAddress }>,
Schema.TaggedStruct<"RunnerUnregistered", { address: typeof RunnerAddress }>
]
>
Since v1.0.0