123456789_123456789_123456789_123456789_123456789_

Module: Concurrent::ErlangActor::Functions

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Extended In:
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.

Examples:

include Concurrent::ErlangActors::Functions
actor = spawn_actor :on_pool do
  receive { |data| process data }
end

See Also:

Instance Method Summary

Instance Method Details

#default_actor_executorExecutorService

Returns:

[ GitHub ]

  
# File 'lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb', line 523

def default_actor_executor
  default_executor
end

#default_executorExecutorService

Returns:

  • (ExecutorService)

    the default executor service, may be shared by other abstractions

[ GitHub ]

  
# File 'lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb', line 529

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.

Parameters:

See Also:

[ GitHub ]

  
# File 'lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb', line 496

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.

Parameters:

[ GitHub ]

  
# File 'lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb', line 513

def terminate_actor(pid, reason)
  if reason == :kill
    pid.tell Kill.new(nil)
  else
    pid.tell Terminate.new(nil, reason, false)
  end
  true
end