Class: Cql::CombinedFuture
Instance Method Summary collapse
- #complete!(v = nil) ⇒ Object
- #fail!(e) ⇒ Object
-
#initialize(*futures) ⇒ CombinedFuture
constructor
A new instance of CombinedFuture.
Methods inherited from Future
combine, #complete?, completed, failed, #failed?, #flat_map, #map, #on_complete, #on_failure, #value
Constructor Details
#initialize(*futures) ⇒ CombinedFuture
Returns a new instance of CombinedFuture.
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 |
# File 'lib/cql/future.rb', line 220 def initialize(*futures) super() values = [nil] * futures.size completed = [false] * futures.size futures.each_with_index do |f, i| f.on_complete do |v| all_done = false @state_lock.synchronize do values[i] = v completed[i] = true all_done = completed.all? end if all_done combined_complete!(values) end end f.on_failure do |e| unless failed? combined_fail!(e) end end end end |
Instance Method Details
#complete!(v = nil) ⇒ Object
250 251 252 |
# File 'lib/cql/future.rb', line 250 def complete!(v=nil) raise FutureError, 'Cannot complete a combined future' end |
#fail!(e) ⇒ Object
254 255 256 |
# File 'lib/cql/future.rb', line 254 def fail!(e) raise FutureError, 'Cannot fail a combined future' end |