class Warg::Executor::Deferred::CallbacksQueue
Public Class Methods
new(execution_order)
click to toggle source
# File lib/warg.rb, line 1663 def initialize(execution_order) @queue = [] @executor_class = Executor.for(execution_order) end
Public Instance Methods
<<(callback)
click to toggle source
# File lib/warg.rb, line 1668 def <<(callback) @queue << callback end
drain(execution_result)
click to toggle source
# File lib/warg.rb, line 1672 def drain(execution_result) drain_queue = @queue.dup # NOTE: It would be nice to incorporate the failure callback into the code here until drain_queue.empty? || execution_result.failed? callback = drain_queue.shift executor = @executor_class.new(execution_result) execution_result = executor.run do |outcome, result| callback_outcome = Outcome.new(outcome) begin # Use `||=` in case `#value` is set in the callback callback_outcome.value ||= callback.(outcome.host, outcome.value, callback_outcome) rescue => error callback_outcome.error = error end result.update callback_outcome end end execution_result end