class Celluloid::ActorSystem
Attributes
registry[R]
Public Class Methods
new()
click to toggle source
# File lib/celluloid/actor_system.rb, line 5 def initialize @internal_pool = InternalPool.new @registry = Registry.new end
Public Instance Methods
assert_inactive()
click to toggle source
# File lib/celluloid/actor_system.rb, line 99 def assert_inactive @internal_pool.assert_inactive end
clear_registry()
click to toggle source
# File lib/celluloid/actor_system.rb, line 46 def clear_registry @registry.clear end
get_thread() { || ... }
click to toggle source
# File lib/celluloid/actor_system.rb, line 29 def get_thread @internal_pool.get do Thread.current[:celluloid_actor_system] = self yield end end
registered()
click to toggle source
# File lib/celluloid/actor_system.rb, line 42 def registered @registry.names end
running()
click to toggle source
# File lib/celluloid/actor_system.rb, line 50 def running actors = [] @internal_pool.each do |t| next unless t.role == :actor actors << t.actor.behavior_proxy if t.actor && t.actor.respond_to?(:behavior_proxy) end actors end
running?()
click to toggle source
# File lib/celluloid/actor_system.rb, line 59 def running? @internal_pool.running? end
shutdown()
click to toggle source
Shut down all running actors
# File lib/celluloid/actor_system.rb, line 64 def shutdown actors = running Timeout.timeout(shutdown_timeout) do Logger.debug "Terminating #{actors.size} #{(actors.size > 1) ? 'actors' : 'actor'}..." if actors.size > 0 # Actors cannot self-terminate, you must do it for them actors.each do |actor| begin actor.terminate! rescue DeadActorError end end actors.each do |actor| begin Actor.join(actor) rescue DeadActorError end end @internal_pool.shutdown end rescue Timeout::Error Logger.error("Couldn't cleanly terminate all actors in #{shutdown_timeout} seconds!") actors.each do |actor| begin Actor.kill(actor) rescue DeadActorError, MailboxDead end end ensure @internal_pool.kill clear_registry end
shutdown_timeout()
click to toggle source
# File lib/celluloid/actor_system.rb, line 103 def shutdown_timeout Celluloid.shutdown_timeout end
stack_dump()
click to toggle source
# File lib/celluloid/actor_system.rb, line 36 def stack_dump Celluloid::StackDump.new(@internal_pool) end
start()
click to toggle source
Launch default services FIXME: We should set up the supervision hierarchy here
# File lib/celluloid/actor_system.rb, line 13 def start within do Celluloid::Notifications::Fanout.supervise_as :notifications_fanout Celluloid::IncidentReporter.supervise_as :default_incident_reporter, STDERR end true end
within() { || ... }
click to toggle source
# File lib/celluloid/actor_system.rb, line 21 def within old = Thread.current[:celluloid_actor_system] Thread.current[:celluloid_actor_system] = self yield ensure Thread.current[:celluloid_actor_system] = old end