class Obligation::Dependent
Public Class Methods
new(dependencies, &block)
click to toggle source
Calls superclass method
Obligation::Base::new
# File lib/obligation/impl.rb, line 120 def initialize(dependencies, &block) super() @dependencies = dependencies @block = block @reason = nil @result = nil end
Protected Instance Methods
_nested(result)
click to toggle source
# File lib/obligation/impl.rb, line 155 def _nested(result) return result.value if result.respond_to? :value result end
_resolved_dependencies()
click to toggle source
# File lib/obligation/impl.rb, line 149 def _resolved_dependencies return @dependencies.map(&:value) if @dependencies.is_a?(Array) @dependencies.value end
_value(timeout)
click to toggle source
# File lib/obligation/impl.rb, line 130 def _value(timeout) @mutex.synchronize do if _sync_pending? begin _sync_fulfill _nested @block.call _resolved_dependencies rescue RejectedError => e _sync_reject e.cause raise RejectedError.new "Obligation rejected due to #{e.cause}." end end case @state when :fulfilled then @result when :rejected then raise RejectedError.new \ "Obligation rejected due to #{@reason}.", @reason end end end