Class Mediator<A, I, T, O, TS>Abstract

A mediator can mediate an action over a bus of actors.

It does the following:

  1. Accepts an action in Mediator#mediate.
  2. Sends the action to the bus to test its applicability on all actors.
  3. It mediates over these test results.
  4. It selects the best actor.
  5. The action is run by the best actor, and the result if returned.

The mediates and best parts are filled in by subclasses of this abstract Mediator class.

Type Parameters

  • A extends Actor<I, T, O, TS>

    The type of actor to mediator over.

  • I extends IAction

    The input type of an actor.

  • T extends IActorTest

    The test type of an actor.

  • O extends IActorOutput

    The output type of an actor.

  • TS = undefined

Hierarchy

  • Mediator

    Implements

    Constructors

    Properties

    bus: Bus<A, I, T, O, TS>

    The bus this mediator will mediate over.

    name: string

    The name for this mediator.

    {<rdf:subject>}
    

    Methods

    • Protected

      Construct a human-friendly failure message that accumulates the given actors's failure messages.

      Parameters

      • action: I

        The action that was executed.

      • actorFailures: string[]

        The failure messages that were collected from actor tests based on the given executed action.

      Returns string

    • Mediate for the given action.

      This will send the test action on all actors in the bus. The action will be run on the actor that tests best, of which the result will be returned.

      Parameters

      • action: I

        The action to mediate for.

      Returns Promise<O>

      A promise that resolves to the mediation result.

    • Mediate for the given action to get an actor.

      This will send the test action on all actors in the bus. The actor that tests best will be returned.

      Parameters

      • action: I

        The action to mediate for.

      Returns Promise<TestResult<A, TS>>

      A promise that resolves to the best actor.

    • Mediate for the given action.

      This will send the test action on all actors in the bus. The action will be run on the actor that tests best, of which the result will be returned.

      Parameters

      • action: I

        The action to mediate for.

      Returns Promise<TestResult<O, TS>>

      A promise that resolves to the mediation result.

    • Mediate for the given action with the given actor test results for the action.

      One actor must be returned that provided the best test result. How 'best' is interpreted, depends on the implementation of the Mediator.

      Parameters

      • action: I

        The action to mediate for.

      • testResults: IActorReply<A, I, T, O, TS>[]

        The actor test results for the action.

      Returns Promise<TestResult<A, TS>>

      A promise that resolves to the best actor.

    • Publish the given action in the bus.

      This will send the test action on all actors in the bus. All actor replies will be returned.

      Parameters

      • action: I

        The action to mediate for.

      Returns IActorReply<A, I, T, O, TS>[]

      The list of actor replies.

    • Parameters

      • obj: any
      • path: string[]

      Returns any