module LIFX::LAN::Utilities

@private

Public Instance Methods

tag_ids_from_field(tags_field) click to toggle source
# File lib/lifx/lan/utilities.rb, line 31
def tag_ids_from_field(tags_field)
  (0...64).to_a.select { |t| (tags_field & (2 ** t)) > 0 }
end
try_until(condition_proc, timeout_exception: TimeoutError, timeout: 3, condition_interval: 0.1, action_interval: 0.5, signal: nil, &action_block) click to toggle source
# File lib/lifx/lan/utilities.rb, line 5
def try_until(condition_proc, timeout_exception: TimeoutError,
                                        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