lib/lxi/net_finder.rb in lxi_rb-0.9.0 vs lib/lxi/net_finder.rb in lxi_rb-0.10.0

- old
+ new

@@ -7,15 +7,32 @@ def init @devices = [] Lxi.init_session end - def search(timeout: 1000, type: :vxi11) - if type == :mdns - raise Error, 'mDNS library not found' unless check_mdns_lib? + def search(type = :vxi11, timeout: 1000) + if type == :vxi11 + search_vxi11(timeout) + elsif type == :mdns + search_mdns(timeout) + else + raise Error, 'Invalid search type' end + end + private + + def search_vxi11(timeout) + net_search(timeout, :vxi11) + end + + def search_mdns(timeout) + raise Error, 'mDNS library not found' unless mdns_lib_found? + net_search(timeout, :mdns) + end + + def net_search(timeout, type) @devices = [] info = FFIFunctions::LxiInfo.new info[:broadcast] = broadcast_callback info[:device] = device_callback info[:service] = service_callback @@ -25,20 +42,18 @@ sleep(0.25) @devices end - private - - def check_mdns_lib? - Lxi::LibChecker.installed?(Lxi::MDNS_PATHS) + def mdns_lib_found? + Lxi::LibChecker.installed?(Lxi::MDNS_LIBS) end def broadcast_callback - # FFI::Function.new(:void, %i[pointer pointer]) do |service, interface| - # puts("Broadcast: #{service.read_string} on #{interface.read_string}\n\n") - # @devices << { service: service.read_string, interface: interface.read_string } - # end + FFI::Function.new(:void, %i[pointer pointer]) do |service, interface| + # puts("Broadcast: #{service.read_string} on #{interface.read_string}\n\n") + # @devices << { service: service.read_string, interface: interface.read_string } + end end def device_callback FFI::Function.new(:void, %i[pointer pointer]) do |address, id| # puts("Device: #{id.read_string} at #{address.read_string}")