@@ -32,10 +32,13 @@ def tell(message)
32
32
#
33
33
# sends message to the actor and asks for the result of its processing, returns immediately
34
34
# @param [Object] message
35
- # @param [Ivar] ivar to be fulfilled be message's processing result
36
- # @return [IVar] supplied ivar
37
- def ask ( message , ivar = IVar . new )
38
- message message , ivar
35
+ # @param [Edge::Future] future to be fulfilled be message's processing result
36
+ # @return [Edge::Future] supplied future
37
+ def ask ( message , future = Concurrent . future )
38
+ message message , future
39
+ # # @return [Future] a future
40
+ # def ask(message)
41
+ # message message, ConcurrentNext.promise
39
42
end
40
43
41
44
# @note it's a good practice to use tell whenever possible. Ask should be used only for
@@ -45,17 +48,26 @@ def ask(message, ivar = IVar.new)
45
48
#
46
49
# sends message to the actor and asks for the result of its processing, blocks
47
50
# @param [Object] message
48
- # @param [Ivar] ivar to be fulfilled be message's processing result
51
+ # @param [Edge::Future] future to be fulfilled be message's processing result
49
52
# @return [Object] message's processing result
50
- # @raise [Exception] ivar.reason if ivar is #rejected?
51
- def ask! ( message , ivar = IVar . new )
52
- ask ( message , ivar ) . value!
53
+ # @raise [Exception] future.reason if future is #rejected?
54
+ def ask! ( message , future = Concurrent . future )
55
+ ask ( message , future ) . value!
56
+ # # @param [Object] message
57
+ # # @return [Object] message's processing result
58
+ # # @raise [Exception] future.reason if future is #failed?
59
+ # def ask!(message)
60
+ # ask(message).value!
53
61
end
54
62
55
- # behaves as {#tell} when no ivar and as {#ask} when ivar
56
- def message ( message , ivar = nil )
57
- core . on_envelope Envelope . new ( message , ivar , Actor . current || Thread . current , self )
58
- return ivar || self
63
+ # behaves as {#tell} when no future and as {#ask} when future
64
+ def message ( message , future = nil )
65
+ core . on_envelope Envelope . new ( message , future , Actor . current || Thread . current , self )
66
+ return future || self
67
+ # # behaves as {#tell} when no promise and as {#ask} when promise
68
+ # def message(message, promise = nil)
69
+ # core.on_envelope Envelope.new(message, promise, Actor.current || Thread.current, self)
70
+ # return promise ? promise.future : self
59
71
end
60
72
61
73
# @see AbstractContext#dead_letter_routing
0 commit comments