Skip to content

FSM

Defined in: src/fsm/FSM.ts:47

Finite-State-Machine DSL built on top of the OO Actor class. Each state has a name, an onReceive handler that returns the next transition, and optional enter/exit callbacks. Internally the FSM stores the current state name, so it’s friendlier than raw become() for protocols with a small, named state set.

Usage: class Door extends FSM<‘closed’|‘open’, { openedAt?: number }, DoorCmd> { constructor() { super(‘closed’, { }); this.when(‘closed’, (d, m) => m === ‘open’ ? this.goto(‘open’, { openedAt: Date.now() }) : this.stay(d)); this.when(‘open’, (d, m) => m === ‘close’ ? this.goto(‘closed’, { }) : this.stay(d)); } }

SName extends string

SData

Msg

new FSM<SName, SData, Msg>(initialState, initialData): FSM<SName, SData, Msg>

Defined in: src/fsm/FSM.ts:55

SName

SData

FSM<SName, SData, Msg>

Actor.constructor

onReceive(msg): Promise<void>

Defined in: src/fsm/FSM.ts:93

Main message handler. Receives each envelope dequeued from the mailbox. A thrown error (sync or async) is caught by the supervisor.

Msg

Promise<void>

Actor.onReceive


postRestart(_reason): void | Promise<void>

Defined in: src/Actor.ts:55

Called on the fresh instance after a restart. Default: call preStart().

Error

void | Promise<void>

Actor.postRestart


postStop(): void | Promise<void>

Defined in: src/Actor.ts:44

Called after the actor has been terminated. Children are already stopped.

void | Promise<void>

Actor.postStop


preRestart(_reason, _message?): void | Promise<void>

Defined in: src/Actor.ts:50

Called before a restart, on the instance about to be thrown away. The default stops children and then calls postStop().

Error

Msg

void | Promise<void>

Actor.preRestart


preStart(): void | Promise<void>

Defined in: src/Actor.ts:41

Called after construction and before the first message is processed.

void | Promise<void>

Actor.preStart


supervisorStrategy(): SupervisorStrategy

Defined in: src/Actor.ts:63

Supervisor strategy for this actor’s children. Defaults to restart, up to 10 times per minute, then stop.

SupervisorStrategy

Actor.supervisorStrategy