Sha256: c29f13ad83b1894f2f68cc0a600c5a629958cfd419f2bb624a85e56ac813c56e

Contents?: true

Size: 1004 Bytes

Versions: 8

Compression:

Stored size: 1004 Bytes

Contents

module LIFX
  # @private
  module Utilities
    def try_until(condition_proc, timeout_exception: Timeout::Error,
                                            timeout: 3,
                                 condition_interval: 0.1,
                                    action_interval: 0.5,
                                             signal: nil, &action_block)
      Timeout.timeout(timeout) do
        m = Mutex.new
        time = 0
        while !condition_proc.call
          if Time.now.to_f - time > action_interval
            time = Time.now.to_f
            action_block.call
          end
          if signal
            m.synchronize do
              signal.wait(m, condition_interval)
            end
          else
            sleep(condition_interval)
          end
        end
      end
    rescue Timeout::Error
      raise timeout_exception if timeout_exception
    end

    def tag_ids_from_field(tags_field)
      (0...64).to_a.select { |t| (tags_field & (2 ** t)) > 0 }
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
lifx-0.4.8 lib/lifx/utilities.rb
lifx-0.4.7 lib/lifx/utilities.rb
lifx-0.4.6.1 lib/lifx/utilities.rb
lifx-0.4.5 lib/lifx/utilities.rb
lifx-0.4.4 lib/lifx/utilities.rb
lifx-0.4.3 lib/lifx/utilities.rb
lifx-0.4.2 lib/lifx/utilities.rb
lifx-0.4.1 lib/lifx/utilities.rb