class Concurrent::Polling::Solver
Public Class Methods
new(poll_function, check_function)
click to toggle source
# File lib/concurrent/polling.rb, line 23 def initialize(poll_function, check_function) @poll_function = poll_function @check_function = check_function end
Public Instance Methods
solve(result)
click to toggle source
# File lib/concurrent/polling.rb, line 28 def solve(result) condition_met = begin @check_function.call(result.ok) rescue Exception => e raise ConditionError.new(e) end if(condition_met) result elsif result.retries == 0 raise TimeoutError.new else future = Concurrent::Future.new(&@poll_function).execute future_result = future.value # blocking solve(TempResult.new(future_result, (result.retries - 1) , nil)) end end