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