Class: Concurrent::Actor::Reference
- Inherits:
-
Object
- Object
- Concurrent::Actor::Reference
- Includes:
- PublicDelegations, TypeCheck
- Defined in:
- lib-edge/concurrent/actor/reference.rb
Overview
Reference is public interface of Actor instances. It is used for sending messages and can be freely passed around the application. It also provides some basic information about the actor, see PublicDelegations.
AdHoc.spawn('printer') { -> { puts } }
# => #<Concurrent::Actor::Reference:0x7fd0d2883218 /printer (Concurrent::Actor::Utils::AdHoc)>
# ^object_id ^path ^context class
Instance Method Summary collapse
- #==(other) ⇒ undocumented
-
#ask(message, future = Concurrent::Promises.resolvable_future) ⇒ Promises::Future
(also: #ask_op)
testing and when it returns very shortly.
-
#ask!(message, future = Concurrent::Promises.resolvable_future) ⇒ Object
Sends the message synchronously and blocks until the message is processed.
- #dead_letter_routing ⇒ undocumented
- #map(messages) ⇒ undocumented
- #message(message, future = nil) ⇒ undocumented
-
#tell(message) ⇒ Reference
(also: #<<)
Sends the message asynchronously to the actor and immediately returns
self
(the reference) allowing to chain message telling. - #to_s ⇒ undocumented (also: #inspect)
- #Child!(value, *types) ⇒ undocumented included from TypeCheck
- #Child?(value, *types) ⇒ Boolean included from TypeCheck
- #context_class ⇒ undocumented (also: #actor_class) included from PublicDelegations
- #executor ⇒ undocumented included from PublicDelegations
- #Match!(value, *types) ⇒ undocumented included from TypeCheck
- #Match?(value, *types) ⇒ Boolean included from TypeCheck
- #name ⇒ undocumented included from PublicDelegations
- #parent ⇒ undocumented included from PublicDelegations
- #path ⇒ undocumented included from PublicDelegations
- #reference ⇒ undocumented (also: #ref) included from PublicDelegations
- #Type!(value, *types) ⇒ undocumented included from TypeCheck
- #Type?(value, *types) ⇒ Boolean included from TypeCheck
Instance Method Details
#==(other) ⇒ undocumented
100 101 102 |
# File 'lib-edge/concurrent/actor/reference.rb', line 100 def ==(other) Type? other, self.class and other.send(:core) == core end |
#ask(message, future = Concurrent::Promises.resolvable_future) ⇒ Promises::Future Also known as: ask_op
it's a good practice to use tell whenever possible. Ask should be used only for
it's a good practice to use #tell whenever possible. Results can be send back with other messages. Ask should be used only for testing and when it returns very shortly. It can lead to deadlock if all threads in global_io_executor will block on while asking. It's fine to use it form outside of actors and global_io_executor.
testing and when it returns very shortly. It can lead to deadlock if all threads in global_io_executor will block on while asking. It's fine to use it form outside of actors and global_io_executor.
54 55 56 |
# File 'lib-edge/concurrent/actor/reference.rb', line 54 def ask(, future = Concurrent::Promises.resolvable_future) , future end |
#ask!(message, future = Concurrent::Promises.resolvable_future) ⇒ Object
it's a good practice to use #tell whenever possible. Results can be send back with other messages. Ask should be used only for testing and when it returns very shortly. It can lead to deadlock if all threads in global_io_executor will block on while asking. It's fine to use it form outside of actors and global_io_executor.
Sends the message synchronously and blocks until the message is processed. Raises on error.
75 76 77 |
# File 'lib-edge/concurrent/actor/reference.rb', line 75 def ask!(, future = Concurrent::Promises.resolvable_future) ask(, future).value! end |
#dead_letter_routing ⇒ undocumented
90 91 92 |
# File 'lib-edge/concurrent/actor/reference.rb', line 90 def dead_letter_routing core.dead_letter_routing end |
#map(messages) ⇒ undocumented
79 80 81 |
# File 'lib-edge/concurrent/actor/reference.rb', line 79 def map() .map { |m| self.ask(m) } end |
#message(message, future = nil) ⇒ undocumented
84 85 86 87 |
# File 'lib-edge/concurrent/actor/reference.rb', line 84 def (, future = nil) core.on_envelope Envelope.new(, future, Actor.current || Thread.current, self) return future ? future.with_hidden_resolvable : self end |
#tell(message) ⇒ Reference Also known as: <<
Sends the message asynchronously to the actor and immediately returns
self
(the reference) allowing to chain message telling.
32 33 34 |
# File 'lib-edge/concurrent/actor/reference.rb', line 32 def tell() , nil end |
#to_s ⇒ undocumented Also known as: inspect
94 95 96 |
# File 'lib-edge/concurrent/actor/reference.rb', line 94 def to_s format '%s %s (%s)>', super[0..-2], path, actor_class end |