class Actor::Supervisor
Constants
- NoActorsStarted
Attributes
actor_count[RW]
assembly_block[W]
error[RW]
thread_group[W]
Public Class Methods
build(&assembly_block)
click to toggle source
# File lib/actor/supervisor.rb, line 20 def self.build &assembly_block instance = new instance.assembly_block = assembly_block instance end
new()
click to toggle source
# File lib/actor/supervisor.rb, line 16 def initialize @actor_count = 0 end
start(&assembly_block)
click to toggle source
# File lib/actor/supervisor.rb, line 26 def self.start &assembly_block Thread.report_on_exception = false thread = Thread.new do instance = Build.(self, &assembly_block) instance.run_loop end loop do ten_seconds = 10 result = thread.join ten_seconds break unless result.nil? end end
Public Instance Methods
assembly_block()
click to toggle source
# File lib/actor/supervisor.rb, line 116 def assembly_block @assembly_block ||= proc { } end
configure()
click to toggle source
# File lib/actor/supervisor.rb, line 43 def configure self.thread_group = Thread.current.group Address::Put.(address) assembly_block.(self) self.publish = Messaging::Publish.build end
handle(message)
click to toggle source
Calls superclass method
Actor::Module::Handler#handle
# File lib/actor/supervisor.rb, line 53 def handle message result = super changed notify_observers message result end
registered_actor?(actor)
click to toggle source
# File lib/actor/supervisor.rb, line 108 def registered_actor? actor publish.registered? actor.address end
thread_group()
click to toggle source
# File lib/actor/supervisor.rb, line 120 def thread_group @thread_group ||= ThreadGroup::Default end
unregistered_actor?(actor)
click to toggle source
# File lib/actor/supervisor.rb, line 112 def unregistered_actor? actor publish.unregistered? actor.address end