class MiniDisc::Discover
Public Class Methods
services(service_type, options = {}, &block)
click to toggle source
# File lib/minidisc/discover.rb, line 9 def services(service_type, options = {}, &block) ensure_initialized(options) service_type = ServiceType.sym_to_dnnsd_string(service_type, options) discover(service_type, options, &block) @destinations end
Private Class Methods
discover(service_type, options = {}, &block)
click to toggle source
# File lib/minidisc/discover.rb, line 23 def discover(service_type, options = {}, &block) @destinations = if options[:override].nil? from_discovery(service_type, id: options[:id], timeout: options[:timeout], &block) else from_override(options[:override], &block) end end
ensure_initialized(options)
click to toggle source
# File lib/minidisc/discover.rb, line 18 def ensure_initialized(options) @logger ||= options[:logger] || Logger.new(STDOUT) @destinations ||= [] end
from_discovery(service_type, options = {}) { |service_objects| ... }
click to toggle source
# File lib/minidisc/discover.rb, line 46 def from_discovery(service_type, options = {}, &block) services = Network.services_with_timeout(service_type, timeout: options[:timeout]) unless options[:id].nil? services.select! do |service| match?(options[:id], service[:name]) end end service_objects = service_hashes_to_service_objects(services) @logger.info("Destinations: Discovered #{services.count} services") yield(service_objects) if block_given? service_objects end
from_override(services) { |service_objects| ... }
click to toggle source
# File lib/minidisc/discover.rb, line 31 def from_override(services, &block) i = 0; service_objects = services.map do |service| Service.new("override_#{i += 1}", service[:host], port: service[:port]) end @logger.info("Destinations: Overriding discovery with #{services.count} services") yield(service_objects) if block_given? service_objects end
match?(match_on, service_name)
click to toggle source
# File lib/minidisc/discover.rb, line 41 def match?(match_on, service_name) match_on.kind_of?(Regexp) && service_name.match(match_on) || match_on == service_name end
service_hashes_to_service_objects(services)
click to toggle source
# File lib/minidisc/discover.rb, line 59 def service_hashes_to_service_objects(services) services.map do |service| Service.new(service[:name], service[:target], port: service[:port]) end end