Module: Celluloid::ClassMethods
- Extended by:
- Forwardable
- Defined in:
- lib/celluloid.rb,
lib/celluloid/supervision/supervise.rb,
lib/celluloid/supervision/container/behavior/pool.rb
Overview
Class methods added to classes which include Celluloid
Instance Method Summary collapse
- #===(other) ⇒ Object
-
#actor_options ⇒ Object
Configuration options for Actor#new.
- #actor_system ⇒ Object
- #behavior_options ⇒ Object
- #new(*args, &block) ⇒ Object (also: #spawn)
-
#new_link(*args, &block) ⇒ Object
(also: #spawn_link)
Create a new actor and link to the current one.
-
#pool(config = {}, &block) ⇒ Object
Create a new pool of workers.
-
#pool_link(klass, config = {}, &block) ⇒ Object
Same as pool, but links to the pool manager.
-
#run(*args, &block) ⇒ Object
Run an actor in the foreground.
- #supervise(config = {}, &block) ⇒ Object
Instance Method Details
#===(other) ⇒ Object
245 246 247 |
# File 'lib/celluloid.rb', line 245 def ===(other) other.is_a? self end |
#actor_options ⇒ Object
Configuration options for Actor#new
225 226 227 228 229 230 231 232 233 |
# File 'lib/celluloid.rb', line 225 def { actor_system: actor_system, mailbox_class: mailbox_class, mailbox_size: mailbox_size, task_class: task_class, exclusive: exclusive_actor } end |
#actor_system ⇒ Object
220 221 222 |
# File 'lib/celluloid.rb', line 220 def actor_system Celluloid.actor_system end |
#behavior_options ⇒ Object
235 236 237 238 239 240 241 242 243 |
# File 'lib/celluloid.rb', line 235 def { proxy_class: proxy_class, exclusive_methods: exclusive_methods, exit_handler_name: exit_handler_name, finalizer: finalizer, receiver_block_executions: execute_block_on_receiver } end |
#new(*args, &block) ⇒ Object Also known as: spawn
197 198 199 200 201 |
# File 'lib/celluloid.rb', line 197 def new(*args, &block) proxy = Cell.new(allocate, , ).proxy proxy._send_(:initialize, *args, &block) proxy end |
#new_link(*args, &block) ⇒ Object Also known as: spawn_link
Create a new actor and link to the current one
205 206 207 208 209 210 211 212 |
# File 'lib/celluloid.rb', line 205 def new_link(*args, &block) raise NotActorError, "can't link outside actor context" unless Celluloid.actor? proxy = Cell.new(allocate, , ).proxy Actor.link(proxy) proxy._send_(:initialize, *args, &block) proxy end |
#pool(config = {}, &block) ⇒ Object
Create a new pool of workers. Accepts the following options:
-
size: how many workers to create. Default is worker per CPU core
-
args: array of arguments to pass when creating a worker
12 13 14 15 |
# File 'lib/celluloid/supervision/container/behavior/pool.rb', line 12 def pool(config = {}, &block) _ = Celluloid.supervise((config, block: block, actors: self)) _.actors.last end |
#pool_link(klass, config = {}, &block) ⇒ Object
Same as pool, but links to the pool manager
18 19 20 |
# File 'lib/celluloid/supervision/container/behavior/pool.rb', line 18 def pool_link(klass, config = {}, &block) Supervision::Container::Pool.new_link((config, block: block, actors: klass)) end |