class DACPClient::Browser
The Client
class handles communication with the server
Constants
- DAAP_SERVICE
- TOUCHABLE_SERVICE
Attributes
services[R]
Public Class Methods
new()
click to toggle source
# File lib/dacpclient/browser.rb, line 22 def initialize @services = [] end
Public Instance Methods
browse()
click to toggle source
# File lib/dacpclient/browser.rb, line 26 def browse @services = [] timeout(5) do DNSSD.browse!(TOUCHABLE_SERVICE) do |node| resolve(node) break unless node.flags.more_coming? end end services rescue Timeout::Error # => e [] end
Private Instance Methods
get_device_host(resolved)
click to toggle source
# File lib/dacpclient/browser.rb, line 48 def get_device_host(resolved) target = resolved.target info = Socket.getaddrinfo(target, nil, Socket::AF_INET) info[0][2] rescue SocketError target end
node_resolver(_node, resolved)
click to toggle source
# File lib/dacpclient/browser.rb, line 41 def node_resolver(_node, resolved) services << Service.new(resolved.name, get_device_host(resolved), resolved.port, resolved.text_record) resolved.flags.more_coming? end
resolve(node)
click to toggle source
# File lib/dacpclient/browser.rb, line 56 def resolve(node) resolver = DNSSD::Service.new resolver.resolve(node) do |resolved| break unless node_resolver(node, resolved) end end