Module: Concurrent::Promises::FactoryMethods
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Extension / Inclusion / Inheritance Descendants | |
Extended In:
| |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
ReInclude ,
self
|
|
Instance Chain:
|
|
Defined in: | lib/concurrent-ruby/concurrent/promises.rb, lib/concurrent-ruby-edge/concurrent/edge/old_channel_integration.rb, lib/concurrent-ruby-edge/concurrent/edge/promises.rb |
Overview
Class Method Summary
Instance Method Summary
-
#any(*futures_and_or_events)
Alias for #any_resolved_future.
-
#any_event(*futures_and_or_events) ⇒ Event
Shortcut of #any_event_on with default
:io
executor supplied. -
#any_event_on(default_executor, *futures_and_or_events) ⇒ Event
Creates a new event which becomes resolved after the first futures_and_or_events resolves.
-
#any_fulfilled_future(*futures_and_or_events) ⇒ Future
Shortcut of #any_fulfilled_future_on with default
:io
executor supplied. -
#any_fulfilled_future_on(default_executor, *futures_and_or_events) ⇒ Future
Creates a new future which is resolved after the first futures_and_or_events is fulfilled.
-
#any_resolved_future(*futures_and_or_events) ⇒ Future
(also: #any)
Shortcut of #any_resolved_future_on with default
:io
executor supplied. -
#any_resolved_future_on(default_executor, *futures_and_or_events) ⇒ Future
Creates a new future which is resolved after the first futures_and_or_events is resolved.
-
#delay(*args, &task) ⇒ Future, Event
Shortcut of #delay_on with default
:io
executor supplied. -
#delay_on(default_executor, *args) {|*args| ... } ⇒ Future
Creates a new event or future which is resolved only after it is touched, see
Concurrent::AbstractEventFuture#touch
. -
#fulfilled_future(value, default_executor = self.default_executor) ⇒ Future
Creates a resolved future which will be fulfilled with the given value.
-
#future(*args, &task) ⇒ Future
Shortcut of #future_on with default
:io
executor supplied. -
#future_on(default_executor, *args) {|*args| ... } ⇒ Future
Constructs a new
Future
which will be resolved after block is evaluated on default executor. -
#make_future(nil, default_executor = self.default_executor) ⇒ Event
General constructor.
-
#rejected_future(reason, default_executor = self.default_executor) ⇒ Future
Creates a resolved future which will be rejected with the given reason.
-
#resolvable_event ⇒ ResolvableEvent
Shortcut of #resolvable_event_on with default
:io
executor supplied. -
#resolvable_event_on(default_executor = self.default_executor) ⇒ ResolvableEvent
Creates a resolvable event, user is responsible for resolving the event once by calling ResolvableEvent#resolve.
-
#resolvable_future ⇒ ResolvableFuture
Shortcut of #resolvable_future_on with default
:io
executor supplied. -
#resolvable_future_on(default_executor = self.default_executor) ⇒ ResolvableFuture
Creates resolvable future, user is responsible for resolving the future once by ResolvableFuture#resolve, ResolvableFuture#fulfill, or ResolvableFuture#reject
-
#resolved_event(default_executor = self.default_executor) ⇒ Event
Creates resolved event.
-
#resolved_future(fulfilled, value, reason, default_executor = self.default_executor) ⇒ Future
Creates a resolved future with will be either fulfilled with the given value or rejected with the given reason.
-
#schedule(intended_time, *args, &task) ⇒ Future, Event
Shortcut of #schedule_on with default
:io
executor supplied. -
#schedule_on(default_executor, intended_time, *args) {|*args| ... } ⇒ Future
Creates a new event or future which is resolved in intended_time.
-
#zip(*futures_and_or_events)
Alias for #zip_futures.
-
#zip_events(*futures_and_or_events) ⇒ Event
Shortcut of #zip_events_on with default
:io
executor supplied. -
#zip_events_on(default_executor, *futures_and_or_events) ⇒ Event
Creates a new event which is resolved after all futures_and_or_events are resolved.
-
#zip_futures(*futures_and_or_events) ⇒ Future
(also: #zip)
Shortcut of #zip_futures_on with default
:io
executor supplied. -
#zip_futures_on(default_executor, *futures_and_or_events) ⇒ Future
Creates a new future which is resolved after all futures_and_or_events are resolved.
-
#zip_futures_over(enumerable, &future_factory) ⇒ Future
Shortcut of #zip_futures_over_on with default
:io
executor supplied. -
#zip_futures_over_on(default_executor, enumerable) {|element| ... } ⇒ Future
Creates new future which is resolved after all the futures created by future_factory from enumerable elements are resolved.
OldChannelIntegration
- Included
#select | only proof of concept. |
Configuration
- Included
Instance Method Details
#any(*futures_and_or_events)
Alias for #any_resolved_future.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 282
alias_method :any, :any_resolved_future
#any_event(*futures_and_or_events) ⇒ Event
Shortcut of #any_event_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 319
def any_event(*futures_and_or_events) any_event_on default_executor, *futures_and_or_events end
#any_event_on(default_executor, *futures_and_or_events) ⇒ Event
Creates a new event which becomes resolved after the first futures_and_or_events resolves. If resolved it does not propagate Concurrent::AbstractEventFuture#touch
, leaving delayed futures un-executed if they are not required any more.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 329
def any_event_on(default_executor, *futures_and_or_events) AnyResolvedEventPromise.new_blocked_by(futures_and_or_events, default_executor).event end
#any_fulfilled_future(*futures_and_or_events) ⇒ Future
Shortcut of #any_fulfilled_future_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 300
def any_fulfilled_future(*futures_and_or_events) any_fulfilled_future_on default_executor, *futures_and_or_events end
#any_fulfilled_future_on(default_executor, *futures_and_or_events) ⇒ Future
Creates a new future which is resolved after the first futures_and_or_events is fulfilled. Its result equals the result of the first resolved future or if all futures_and_or_events reject, it has reason of the last rejected future. If resolved it does not propagate Concurrent::AbstractEventFuture#touch
, leaving delayed futures un-executed if they are not required any more. If event is supplied, which does not have value and can be only resolved, it’s represented as :fulfilled
with value nil
.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 313
def any_fulfilled_future_on(default_executor, *futures_and_or_events) AnyFulfilledFuturePromise.new_blocked_by(futures_and_or_events, default_executor).future end
#any_resolved_future(*futures_and_or_events) ⇒ Future Also known as: #any
Shortcut of #any_resolved_future_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 278
def any_resolved_future(*futures_and_or_events) any_resolved_future_on default_executor, *futures_and_or_events end
#any_resolved_future_on(default_executor, *futures_and_or_events) ⇒ Future
Creates a new future which is resolved after the first futures_and_or_events is resolved. Its result equals the result of the first resolved future. If resolved it does not propagate Concurrent::AbstractEventFuture#touch
, leaving delayed futures un-executed if they are not required any more. If event is supplied, which does not have value and can be only resolved, it’s represented as :fulfilled
with value nil
.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 294
def any_resolved_future_on(default_executor, *futures_and_or_events) AnyResolvedFuturePromise.new_blocked_by(futures_and_or_events, default_executor).future end
#delay(*args, &task) ⇒ Future, Event
Shortcut of #delay_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 190
def delay(*args, &task) delay_on default_executor, *args, &task end
Creates a new event or future which is resolved only after it is touched, see Concurrent::AbstractEventFuture#touch
.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 207
def delay_on(default_executor, *args, &task) event = DelayPromise.new(default_executor).event task ? event.chain(*args, &task) : event end
#fulfilled_future(value, default_executor = self.default_executor) ⇒ Future
Creates a resolved future which will be fulfilled with the given value.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 127
def fulfilled_future(value, default_executor = self.default_executor) resolved_future true, value, nil, default_executor end
#future(*args, &task) ⇒ Future
Shortcut of #future_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 94
def future(*args, &task) future_on(default_executor, *args, &task) end
#future_on(default_executor, *args) {|*args| ... } ⇒ Future
Constructs a new Future
which will be resolved after block is evaluated on default executor. Evaluation begins immediately.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 106
def future_on(default_executor, *args, &task) ImmediateEventPromise.new(default_executor).future.then(*args, &task) end
#make_future(nil, default_executor = self.default_executor) ⇒ Event
#make_future(a_future, default_executor = self.default_executor) ⇒ Future
#make_future(an_event, default_executor = self.default_executor) ⇒ Event
#make_future(exception, default_executor = self.default_executor) ⇒ Future
#make_future(value, default_executor = self.default_executor) ⇒ Future
General constructor. Behaves differently based on the argument’s type. It’s provided for convenience but it’s better to be explicit.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 174
def make_future(argument = nil, default_executor = self.default_executor) case argument when AbstractEventFuture # returning wrapper would change nothing argument when Exception rejected_future argument, default_executor when nil resolved_event default_executor else fulfilled_future argument, default_executor end end
#rejected_future(reason, default_executor = self.default_executor) ⇒ Future
Creates a resolved future which will be rejected with the given reason.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 136
def rejected_future(reason, default_executor = self.default_executor) resolved_future false, nil, reason, default_executor end
#resolvable_event ⇒ ResolvableEvent
Shortcut of #resolvable_event_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 63
def resolvable_event resolvable_event_on default_executor end
#resolvable_event_on(default_executor = self.default_executor) ⇒ ResolvableEvent
Creates a resolvable event, user is responsible for resolving the event once by calling ResolvableEvent#resolve.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 72
def resolvable_event_on(default_executor = self.default_executor) ResolvableEventPromise.new(default_executor).future end
#resolvable_future ⇒ ResolvableFuture
Shortcut of #resolvable_future_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 78
def resolvable_future resolvable_future_on default_executor end
#resolvable_future_on(default_executor = self.default_executor) ⇒ ResolvableFuture
Creates resolvable future, user is responsible for resolving the future once by ResolvableFuture#resolve, ResolvableFuture#fulfill, or ResolvableFuture#reject
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 88
def resolvable_future_on(default_executor = self.default_executor) ResolvableFuturePromise.new(default_executor).future end
#resolved_event(default_executor = self.default_executor) ⇒ Event
Creates resolved event.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 144
def resolved_event(default_executor = self.default_executor) ImmediateEventPromise.new(default_executor).event end
#resolved_future(fulfilled, value, reason, default_executor = self.default_executor) ⇒ Future
Creates a resolved future with will be either fulfilled with the given value or rejected with the given reason.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 118
def resolved_future(fulfilled, value, reason, default_executor = self.default_executor) ImmediateFuturePromise.new(default_executor, fulfilled, value, reason).future end
#schedule(intended_time, *args, &task) ⇒ Future, Event
Shortcut of #schedule_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 214
def schedule(intended_time, *args, &task) schedule_on default_executor, intended_time, *args, &task end
Creates a new event or future which is resolved in intended_time.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 233
def schedule_on(default_executor, intended_time, *args, &task) event = ScheduledPromise.new(default_executor, intended_time).event task ? event.chain(*args, &task) : event end
#zip(*futures_and_or_events)
Alias for #zip_futures.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 258
alias_method :zip, :zip_futures
#zip_events(*futures_and_or_events) ⇒ Event
Shortcut of #zip_events_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 262
def zip_events(*futures_and_or_events) zip_events_on default_executor, *futures_and_or_events end
#zip_events_on(default_executor, *futures_and_or_events) ⇒ Event
Creates a new event which is resolved after all futures_and_or_events are resolved. (Future is resolved when fulfilled or rejected.)
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 272
def zip_events_on(default_executor, *futures_and_or_events) ZipEventsPromise.new_blocked_by(futures_and_or_events, default_executor).event end
#zip_futures(*futures_and_or_events) ⇒ Future Also known as: #zip
Shortcut of #zip_futures_on with default :io
executor supplied.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 240
def zip_futures(*futures_and_or_events) zip_futures_on default_executor, *futures_and_or_events end
#zip_futures_on(default_executor, *futures_and_or_events) ⇒ Future
Creates a new future which is resolved after all futures_and_or_events are resolved. Its value is an array of zipped future values. Its reason is an array of reasons for rejection. If there is an error it rejects. If event is supplied, which does not have value and can be only resolved, it’s represented as :fulfilled
with value nil
.
# File 'lib/concurrent-ruby/concurrent/promises.rb', line 254
def zip_futures_on(default_executor, *futures_and_or_events) ZipFuturesPromise.new_blocked_by(futures_and_or_events, default_executor).future end
#zip_futures_over(enumerable, &future_factory) ⇒ Future
**Edge Features** are under active development and may change frequently.
-
Deprecations are not added before incompatible changes.
-
Edge
version: major is always 0, minor bump means incompatible change, patch bump means compatible change. -
Edge
features may also lack tests and documentation. -
Features developed in
concurrent-ruby-edge
are expected to move toconcurrent-ruby
when finalised.
Shortcut of #zip_futures_over_on with default :io
executor supplied.
# File 'lib/concurrent-ruby-edge/concurrent/edge/promises.rb', line 72
def zip_futures_over(enumerable, &future_factory) zip_futures_over_on default_executor, enumerable, &future_factory end
#zip_futures_over_on(default_executor, enumerable) {|element| ... } ⇒ Future
**Edge Features** are under active development and may change frequently.
-
Deprecations are not added before incompatible changes.
-
Edge
version: major is always 0, minor bump means incompatible change, patch bump means compatible change. -
Edge
features may also lack tests and documentation. -
Features developed in
concurrent-ruby-edge
are expected to move toconcurrent-ruby
when finalised.
Creates new future which is resolved after all the futures created by future_factory from enumerable elements are resolved. Simplified it does: zip(*enumerable.map { |e| future e, &future_factory })
# File 'lib/concurrent-ruby-edge/concurrent/edge/promises.rb', line 90
def zip_futures_over_on(default_executor, enumerable, &future_factory) # ZipFuturesPromise.new_blocked_by(futures_and_or_events, default_executor).future zip_futures_on(default_executor, *enumerable.map { |e| future e, &future_factory }) end