module Concurrent::Polling
Constants
- ConditionError
- DEFAULT_OPTIONS
- TimeoutError
- VERSION
Public Class Methods
poll(options = {})
click to toggle source
# File lib/concurrent/polling.rb, line 51 def self.poll(options = {}) opts = DEFAULT_OPTIONS.merge(options) success_condition = opts[:success_condition] poll = opts[:poll] retries = opts[:retries] solver = Solver.new(poll, success_condition ) promise = Promise.new{ solver.solve(TempResult.new(poll.call(), retries, nil)) } .rescue { |reason| FinalResult.with(ok: nil, reason: reason)} .then { |result| FinalResult.new(result.ok, result.reason) } promise.execute promise.value end