Module: Concurrent::ErlangActor::Functions
- Included in:
- Concurrent::ErlangActor
- Defined in:
- lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb
Overview
A module containing entry functions to actors like spawn_actor, terminate_actor. It can be included in environments working with actors.
Instance Method Summary collapse
-
#default_actor_executor ⇒ ExecutorService
The default executor service for actors.
-
#default_executor ⇒ ExecutorService
The default executor service, may be shared by other abstractions.
-
#spawn_actor(*args, type:, channel: Promises::Channel.new, environment: Environment, name: nil, executor: default_actor_executor, &body) ⇒ Pid
Creates an actor.
-
#terminate_actor(pid, reason) ⇒ true
Same as Environment#terminate, but it requires pid.
Instance Method Details
#default_actor_executor ⇒ ExecutorService
Returns the default executor service for actors.
515 516 517 |
# File 'lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb', line 515 def default_actor_executor default_executor end |
#default_executor ⇒ ExecutorService
Returns the default executor service, may be shared by other abstractions.
521 522 523 |
# File 'lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb', line 521 def default_executor :io end |
#spawn_actor(*args, type:, channel: Promises::Channel.new, environment: Environment, name: nil, executor: default_actor_executor, &body) ⇒ Pid
Creates an actor. Same as Environment#spawn but lacks link and monitor options.
488 489 490 491 492 493 494 495 496 497 498 499 |
# File 'lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb', line 488 def spawn_actor(*args, type:, channel: Promises::Channel.new, environment: Environment, name: nil, executor: default_actor_executor, &body) actor = ErlangActor.create type, channel, environment, name, executor actor.run(*args, &body) return actor.pid end |
#terminate_actor(pid, reason) ⇒ true
Same as Environment#terminate, but it requires pid.
505 506 507 508 509 510 511 512 |
# File 'lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb', line 505 def terminate_actor(pid, reason) if reason == :kill pid.tell Kill.new(nil) else pid.tell Terminate.new(nil, reason, false) end true end |