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