class Concurrent::Edge::ZipFuturesPromise
@!visibility private
Public Class Methods
new(blocked_by_futures, default_executor)
click to toggle source
Calls superclass method
Concurrent::Edge::BlockedPromise.new
# File lib/concurrent/edge/future.rb, line 1290 def initialize(blocked_by_futures, default_executor) super(Future.new(self, default_executor), blocked_by_futures, blocked_by_futures.size) on_completable nil if blocked_by_futures.empty? end
Private Instance Methods
on_completable(done_future)
click to toggle source
# File lib/concurrent/edge/future.rb, line 1296 def on_completable(done_future) all_success = true values = Array.new(blocked_by.size) reasons = Array.new(blocked_by.size) blocked_by.each_with_index do |future, i| if future.is_a?(Future) success, values[i], reasons[i] = future.result all_success &&= success else values[i] = reasons[i] = nil end end if all_success complete_with Future::SuccessArray.new(values) else complete_with Future::PartiallyFailed.new(values, reasons) end end