class LIFX::LAN::RoutingTable

@private

Public Class Methods

new(entries: {}) click to toggle source

RoutingTable stores the device <-> site mapping

# File lib/lifx/lan/routing_table.rb, line 9
def initialize(entries: {})
  @device_site_mapping = entries
end

Public Instance Methods

clear_stale_entries(threshold: 60 * 5) click to toggle source
# File lib/lifx/lan/routing_table.rb, line 41
def clear_stale_entries(threshold: 60 * 5)
  @device_site_mapping.reject! do |device_id, entry|
    entry.last_seen < Time.now - threshold
  end
end
device_ids() click to toggle source
# File lib/lifx/lan/routing_table.rb, line 33
def device_ids
  entries.map(&:device_id).uniq
end
entries() click to toggle source
# File lib/lifx/lan/routing_table.rb, line 37
def entries
  @device_site_mapping.values
end
entry_for_device_id(device_id) click to toggle source
# File lib/lifx/lan/routing_table.rb, line 20
def entry_for_device_id(device_id)
  @device_site_mapping[device_id]
end
site_id_for_device_id(device_id) click to toggle source
# File lib/lifx/lan/routing_table.rb, line 24
def site_id_for_device_id(device_id)
  entry = entry_for_device_id(device_id)
  entry ? entry.site_id : nil
end
site_ids() click to toggle source
# File lib/lifx/lan/routing_table.rb, line 29
def site_ids
  entries.map(&:site_id).uniq
end
update_table(site_id: self.site_id, device_id: self.device_id, tag_ids: nil, last_seen: Time.now) click to toggle source
# File lib/lifx/lan/routing_table.rb, line 13
def update_table(site_id: self.site_id, device_id: self.device_id, tag_ids: nil, last_seen: Time.now)
  device_mapping = @device_site_mapping[device_id] ||= Entry.new(site_id, device_id, [])
  device_mapping.site_id = site_id
  device_mapping.last_seen = last_seen
  device_mapping.tag_ids = tag_ids if tag_ids
end