Sha256: 5d7674bdd464e6ba1c039c26b930235f936e85fd259cf4055c5df59180cce66a
Contents?: true
Size: 1.07 KB
Versions: 3
Compression:
Stored size: 1.07 KB
Contents
module LIFX # @private class RoutingTable class Entry < Struct.new(:site_id, :device_id, :tag_ids, :last_seen); end # RoutingTable stores the device <-> site mapping def initialize(entries: {}) @device_site_mapping = entries end def update_table(site_id: site_id, device_id: 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 def entry_for_device_id(device_id) @device_site_mapping[device_id] end def site_id_for_device_id(device_id) entry = entry_for_device_id(device_id) entry ? entry.site_id : nil end def site_ids entries.map(&:site_id).uniq end def entries @device_site_mapping.values end def clear_stale_entries(threshold: 60 * 5) @device_site_mapping.reject! do |device_id, entry| entry.last_seen < Time.now - threshold end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lifx-0.4.11 | lib/lifx/routing_table.rb |
lifx-0.4.10 | lib/lifx/routing_table.rb |
lifx-0.4.8 | lib/lifx/routing_table.rb |