class Tradfri::Service
Constants
- INTERNET_PROTOCOL
- REGISTRATION_TYPE
- SERVICE_TYPE
- TRANSPORT_PROTOCOL
Public Class Methods
discover()
click to toggle source
# File lib/tradfri/service.rb, line 15 def self.discover browse(REGISTRATION_TYPE).map do |reply| host, port = resolve(reply, INTERNET_PROTOCOL) Service.new(reply.name, host, port) end end
Private Class Methods
browse(registration_type)
click to toggle source
# File lib/tradfri/service.rb, line 22 def self.browse(registration_type) [].tap do |replies| DNSSD.browse! registration_type do |reply| replies << reply if reply.flags.add? break unless reply.flags.more_coming? end end end
resolve(browse_reply, protocol)
click to toggle source
# File lib/tradfri/service.rb, line 31 def self.resolve(browse_reply, protocol) DNSSD.resolve! browse_reply do |resolve_reply| DNSSD::Service.getaddrinfo(resolve_reply.target, protocol).each do |address_reply| return [address_reply.address, resolve_reply.port] end break unless resolve_reply.flags.more_coming? end raise "couldn’t resolve #{browse_reply.name}" end
Public Instance Methods
mac_address()
click to toggle source
# File lib/tradfri/service.rb, line 10 def mac_address name.slice %r{(?:\h{2}-){5}\h{2}} || raise("couldn’t find MAC address in “#{name}”") end