Null Pointer Mayhem

    actor-system
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.0-alpha.2 • Public • Published

    JavaScript Actors

    This lib is a proof of concept implementation of actor system in JavaScript.

    Install

    npm install actor-system
    

    Thanks to @kt3k for providing the name in NPM registry.

    How to use

    1. Bootstrap actor system.
    import { ActorSystem, MessageDispatcher, ExecutionContext, AnimationFrameExecutor } from 'actor-system';
     
    const executor = new AnimationFrameExecutor();
    const context = new ExecutionContext(executor);
    const dispatcher = new MessageDispatcher(context);
    const system = new ActorSystem(dispatcher);

    Or by using default set of tools:

    import { ActorSystem } from 'actor-system';
     
    const system = ActorSystem.fromDefaults();
    1. Define message types.
    import { Message } from 'actor-system';
     
    class Ping extends Message { }
    class Pong extends Message { }
    1. Implement actors.
    async function PingActor(system) {
      for await (const message of system.dispatcher) {
        switch (message.subject) {
        case Ping:
          system.dispatcher.dispatch(new Pong());
          break;
        }
      }
    }
     
    async function PongActor(system) {
      for await (const message of system.dispatcher) {
        switch (message.subject) {
        case Pong:
          system.dispatcher.dispatch(new Ping());
          break;
        }
      }
    }
     
    async function Main(system) {
      system.dispatcher.dispatch(new Ping());
    }
    1. Spawn them.
    system.spawn(PingActor);
    system.spawn(PongActor);
    system.spawn(Main);

    Articles

    Install

    npm i actor-system

    DownloadsWeekly Downloads

    2

    Version

    2.0.0-alpha.2

    License

    MIT

    Last publish

    Collaborators

    • alexeyraspopov