Class: Concurrent::Promises::AbstractEventFuture
- Inherits:
-
Synchronization::Object
- Object
- Synchronization::Object
- Concurrent::Promises::AbstractEventFuture
- Includes:
- ThrottleIntegration
- Defined in:
- lib/concurrent/edge/promises.rb,
lib/concurrent/edge/throttle.rb
Overview
Defined Under Namespace
Modules: ThrottleIntegration
Constant Summary
Instance Method Summary (collapse)
-
- (undocumented) add_callback_notify_blocked(promise, index)
@!visibility private.
-
- (Future) chain(*args, &task)
Shortcut of #chain_on with default
:io
executor supplied. -
- (Future) chain_on(executor, *args, &task)
Chains the task to be executed asynchronously on executor after it is resolved.
-
- (self) chain_resolvable(resolvable)
(also: #tangle)
Resolves the resolvable when receiver is resolved.
-
- (Promises::Future, Promises::Event) chain_throttled_by(throttle, *args, &block)
included
from ThrottleIntegration
Behaves as #chain but the it is throttled.
-
- (Executor) default_executor
Returns default executor.
-
- (self) on_resolution(*args, &callback)
Shortcut of #on_resolution_using with default
:io
executor supplied. -
- (self) on_resolution!(*args, &callback)
Stores the callback to be executed synchronously on resolving thread after it is resolved.
-
- (self) on_resolution_using(executor, *args, &callback)
Stores the callback to be executed asynchronously on executor after it is resolved.
-
- (Boolean) pending?(state = internal_state)
Is it in pending state?.
-
- (Boolean) resolved?(state = internal_state)
Is it in resolved state?.
-
- (Symbol) state
Returns its state.
- - (undocumented) throttled_by(throttle, &throttled_futures) included from ThrottleIntegration
-
- (String) to_s
(also: #inspect)
Short string representation.
-
- (self) touch
Propagates touch.
-
- (Future, true, false) wait(timeout = nil)
Wait (block the Thread) until receiver is #resolved?.
-
- (AbstractEventFuture) with_default_executor(executor)
abstract
Crates new object with same class with the executor set as its new default executor.
Instance Method Details
- (undocumented) add_callback_notify_blocked(promise, index)
@!visibility private
742 743 744 |
# File 'lib/concurrent/edge/promises.rb', line 742 def add_callback_notify_blocked(promise, index) add_callback :callback_notify_blocked, promise, index end |
- (Future) chain(*args, &task)
Shortcut of #chain_on with default :io
executor supplied.
605 606 607 |
# File 'lib/concurrent/edge/promises.rb', line 605 def chain(*args, &task) chain_on @DefaultExecutor, *args, &task end |
- (Future) an_event.chain_on(executor, *args) {|*args| ... } - (Future) a_future.chain_on(executor, *args) {|fulfilled, value, reason, *args| ... }
Chains the task to be executed asynchronously on executor after it is resolved.
623 624 625 |
# File 'lib/concurrent/edge/promises.rb', line 623 def chain_on(executor, *args, &task) ChainPromise.new_blocked_by1(self, @DefaultExecutor, executor, args, &task).future end |
- (self) chain_resolvable(resolvable) Also known as: tangle
Resolves the resolvable when receiver is resolved.
638 639 640 |
# File 'lib/concurrent/edge/promises.rb', line 638 def chain_resolvable(resolvable) on_resolution! { resolvable.resolve_with internal_state } end |
- (Promises::Future, Promises::Event) chain_throttled_by(throttle, *args, &block) Originally defined in module ThrottleIntegration
Behaves as Concurrent::Promises::AbstractEventFuture#chain but the it is throttled.
- (Executor) default_executor
Returns default executor.
599 600 601 |
# File 'lib/concurrent/edge/promises.rb', line 599 def default_executor @DefaultExecutor end |
- (self) on_resolution(*args, &callback)
Shortcut of #on_resolution_using with default :io
executor supplied.
646 647 648 |
# File 'lib/concurrent/edge/promises.rb', line 646 def on_resolution(*args, &callback) on_resolution_using @DefaultExecutor, *args, &callback end |
- (self) an_event.on_resolution!(*args) {|*args| ... } - (self) a_future.on_resolution!(*args) {|fulfilled, value, reason, *args| ... }
Stores the callback to be executed synchronously on resolving thread after it is resolved.
664 665 666 |
# File 'lib/concurrent/edge/promises.rb', line 664 def on_resolution!(*args, &callback) add_callback :callback_on_resolution, args, callback end |
- (self) an_event.on_resolution_using(executor, *args) {|*args| ... } - (self) a_future.on_resolution_using(executor, *args) {|fulfilled, value, reason, *args| ... }
Stores the callback to be executed asynchronously on executor after it is resolved.
682 683 684 |
# File 'lib/concurrent/edge/promises.rb', line 682 def on_resolution_using(executor, *args, &callback) add_callback :async_callback_on_resolution, executor, args, callback end |
- (Boolean) pending?(state = internal_state)
Is it in pending state?
558 559 560 |
# File 'lib/concurrent/edge/promises.rb', line 558 def pending?(state = internal_state) !state.resolved? end |
- (Boolean) resolved?(state = internal_state)
Is it in resolved state?
564 565 566 |
# File 'lib/concurrent/edge/promises.rb', line 564 def resolved?(state = internal_state) state.resolved? end |
- (:pending, :resolved) an_event.state - (:pending, :fulfilled, :rejected) a_future.state
Returns its state.
552 553 554 |
# File 'lib/concurrent/edge/promises.rb', line 552 def state internal_state.to_sym end |
- (undocumented) throttled_by(throttle, &throttled_futures) Originally defined in module ThrottleIntegration
- (String) to_s Also known as: inspect
Returns Short string representation.
628 629 630 |
# File 'lib/concurrent/edge/promises.rb', line 628 def to_s format '<#%s:0x%x %s>', self.class, object_id << 1, state end |
- (self) touch
Propagates touch. Requests all the delayed futures, which it depends on, to be executed. This method is called by any other method requiring resolved state, like #wait.
571 572 573 574 |
# File 'lib/concurrent/edge/promises.rb', line 571 def touch @Promise.touch self end |
- (Future, true, false) wait(timeout = nil)
This function potentially blocks current thread until the Future is resolved. Be careful it can deadlock. Try to chain instead.
Wait (block the Thread) until receiver is #resolved?. Calls #touch.
587 588 589 590 |
# File 'lib/concurrent/edge/promises.rb', line 587 def wait(timeout = nil) result = wait_until_resolved(timeout) timeout ? result : self end |
- (AbstractEventFuture) with_default_executor(executor)
Crates new object with same class with the executor set as its new default executor. Any futures depending on it will use the new default executor.
692 693 694 |
# File 'lib/concurrent/edge/promises.rb', line 692 def with_default_executor(executor) raise NotImplementedError end |