# Class: Concurrent::Actor::Root

Inherits:
  AbstractContext
  - Object
  - AbstractContext
  - Concurrent::Actor::Root
  show all

Defined in:
  lib/concurrent-ruby-edge/concurrent/actor/root.rb

## Overview

implements the root actor

## Instance Method Summary collapse

- #behaviour_definition ⇒ undocumented
- #dead_letter_routing ⇒ undocumented
- #initialize ⇒ Root constructor

  A new instance of Root.

- #on_message(message) ⇒ undocumented

  to allow spawning of new actors, spawn needs to be called inside the parent Actor.

## Constructor Details

### #initialize ⇒ `Root`

Returns a new instance of Root.

    6
    7
    8
    9
    10
    11
    12

    # File 'lib/concurrent-ruby-edge/concurrent/actor/root.rb', line 6

    def initialize
      # noinspection RubyArgCount
      @dead_letter_router = Core.new(parent:    reference,
                                     class:     DefaultDeadLetterHandler,
                                     supervise: true,
                                     name:      :default_dead_letter_handler).reference
    end

## Instance Method Details

### #behaviour_definition ⇒ `undocumented`

    30
    31
    32
    33
    34

    # File 'lib/concurrent-ruby-edge/concurrent/actor/root.rb', line 30

    def behaviour_definition
      [*Behaviour.base(:just_log),
       *Behaviour.supervising,
       *Behaviour.user_messages]
    end

### #dead_letter_routing ⇒ `undocumented`

    26
    27
    28

    # File 'lib/concurrent-ruby-edge/concurrent/actor/root.rb', line 26

    def dead_letter_routing
      @dead_letter_router
    end

### #on_message(message) ⇒ `undocumented`

to allow spawning of new actors, spawn needs to be called inside the parent Actor

    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

    # File 'lib/concurrent-ruby-edge/concurrent/actor/root.rb', line 15

    def on_message(message)
      case
      when message.is_a?(::Array) && message.first == :spawn
        Actor.spawn message[1], &message[2]
      when message == :dead_letter_routing
        @dead_letter_router
      else
        # ignore
      end
    end