Skip to main content Link Search Menu Expand Document (external link)

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

Source

Since v1.0.0

layerClientLocal

Signature

declare const layerClientLocal: Layer.Layer<ShardManagerClient, never, ShardingConfig>

Source

Since v1.0.0

layerClientRpc

Signature

declare const layerClientRpc: Layer.Layer<ShardManagerClient, never, ShardingConfig | RpcClientProtocol>

Source

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
>

Source

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
>

Source

Since v1.0.0

Config

Config (class)

Signature

declare class Config

Source

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
}>

Source

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
>

Source

Since v1.0.0

layerConfig

Signature

declare const layerConfig: (config?: Partial<Config["Type"]>) => Layer.Layer<Config>

Source

Since v1.0.0

layerConfigFromEnv

Signature

declare const layerConfigFromEnv: Layer.Layer<Config, ConfigError, never>

Source

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
>

Source

Since v1.0.0

Rpcs

Rpcs (class)

The messaging protocol for the ShardManager.

Signature

declare class Rpcs

Source

Since v1.0.0

Server

layerServer

Signature

declare const layerServer: Layer.Layer<never, never, ShardManager | RpcServer.Protocol>

Source

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
>

Source

Since v1.0.0

layer

layer

Signature

declare const layer: Layer.Layer<ShardManager, never, ShardStorage | ShardingConfig | RunnerHealth | Config | Runners>

Source

Since v1.0.0

models

ShardManager (class)

Signature

declare class ShardManager

Source

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"]
      >
    >
  }
}

Source

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 }
}>

Source

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 }>
  ]
>

Source

Since v1.0.0