Sha256: a5ecd2c731209dd99d9f1d9f480e239dd3c78270137f91cada1e84767ca48cb8

Contents?: true

Size: 616 Bytes

Versions: 1

Compression:

Stored size: 616 Bytes

Contents

module Terminus
  module Timeouts
    
    class TimeoutError < StandardError
    end
    
    include Faye::Timeouts
    TIMEOUT = 30
    
    def wait_with_timeout(name, duration = TIMEOUT, &predicate)
      result, time_out = predicate.call, false
      return result if result
      
      add_timeout(name, duration) { time_out = true }
      
      while !result and !time_out
        result = predicate.call
        sleep(0.001)
      end
      
      raise TimeoutError.new("Waited #{duration}s but could not get a #{name}") if time_out
      remove_timeout(name)
      
      result
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
terminus-0.4.0 lib/terminus/timeouts.rb