class Concurrent::Actor::Root

implements the root actor

Public Class Methods

new() click to toggle source
# File lib/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

Public Instance Methods

behaviour_definition() click to toggle source
# File lib/concurrent/actor/root.rb, line 30
def behaviour_definition
  [*Behaviour.base(:just_log),
   *Behaviour.supervising,
   *Behaviour.user_messages]
end
dead_letter_routing() click to toggle source
# File lib/concurrent/actor/root.rb, line 26
def dead_letter_routing
  @dead_letter_router
end
on_message(message) click to toggle source

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

# File lib/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