Class: Salut::Browser
- Inherits:
-
Object
- Object
- Salut::Browser
- Defined in:
- lib/Salut/Browser.rb
Overview
Browsers are used for searching for services or domains. A single instance should only be used for a single search.
You should be careful not to reuse the same instance for multiple searches without calling #stop_searching, otherwise you are likely to get an error logged. The reason for this is that a browser never really stops searching (unless you call #stop_searching), even if moreComing is false. moreComing is a signal that the browser up to date on the network state for the moment but any new network state changes will trigger the callbacks again.
Instance Attribute Summary collapse
- #browser ⇒ NSNetServiceBrowser readonly
- #domains ⇒ Array<String> readonly
- #searching ⇒ Boolean (also: #searching?) readonly
- #services ⇒ Array<Salut::Service> readonly
Adding callback extensions collapse
-
#delegate(method) ⇒ Proc
A shortcut for reading/writing to the delegate methods hash.
Finding domains collapse
Finding services collapse
Delegate methods collapse
- #netServiceBrowser(sender, didNotSearch: error_dict) {|sender, error_dict| ... } ⇒ Object
- #netServiceBrowserDidStopSearch(sender) {|sender| ... } ⇒ Object
- #netServiceBrowserWillSearch(sender) {|sender| ... } ⇒ Object
Instance Method Summary collapse
-
#initialize ⇒ Browser
constructor
Ensure that some instance variables are initialized.
-
#stop_finding ⇒ Object
(also: #stop_finding_domains, #stop_finding_services)
Stop searching for things, whether they be domains or services.
Constructor Details
#initialize ⇒ Browser
Ensure that some instance variables are initialized
31 32 33 34 35 36 37 38 |
# File 'lib/Salut/Browser.rb', line 31 def initialize @browser = NSNetServiceBrowser.alloc.init @browser.delegate = self @domains = [] @services = [] @delegates = {} @searching = false end |
Instance Attribute Details
#browser ⇒ NSNetServiceBrowser (readonly)
28 29 30 |
# File 'lib/Salut/Browser.rb', line 28 def browser @browser end |
#domains ⇒ Array<String> (readonly)
22 23 24 |
# File 'lib/Salut/Browser.rb', line 22 def domains @domains end |
#searching ⇒ Boolean (readonly) Also known as: searching?
18 19 20 |
# File 'lib/Salut/Browser.rb', line 18 def searching @searching end |
#services ⇒ Array<Salut::Service> (readonly)
25 26 27 |
# File 'lib/Salut/Browser.rb', line 25 def services @services end |
Instance Method Details
#delegate(method) ⇒ Proc
A shortcut for reading/writing to the delegate methods hash
51 52 53 54 55 56 57 |
# File 'lib/Salut/Browser.rb', line 51 def delegate method if block_given? @delegates[method] = Proc.new else @delegates[method] end end |
#find_browsable_domains ⇒ nil
63 64 65 |
# File 'lib/Salut/Browser.rb', line 63 def find_browsable_domains @browser.searchForBrowsableDomains end |
#find_services(service_type, domain_name = '') ⇒ Object
find a way to use default arguments
75 76 77 |
# File 'lib/Salut/Browser.rb', line 75 def find_services service_type, domain_name = '' @browser.searchForServicesOfType service_type, inDomain:domain_name end |
#netServiceBrowser(sender, didNotSearch: error_dict) {|sender, error_dict| ... } ⇒ Object
87 88 89 90 91 |
# File 'lib/Salut/Browser.rb', line 87 def netServiceBrowser sender, didFindDomain:domain_name, moreComing:more @domains << domain_name @delegates[__method__].call self, domain_name, more if @delegates[__method__] Salut.log.info "Found domain: #{domain_name}" end |
#netServiceBrowserDidStopSearch(sender) {|sender| ... } ⇒ Object
143 144 145 146 147 |
# File 'lib/Salut/Browser.rb', line 143 def netServiceBrowserDidStopSearch sender @searching = false @delegates[__method__].call self if @delegates[__method__] Salut.log.info "Done searching (#{sender.description})" end |
#netServiceBrowserWillSearch(sender) {|sender| ... } ⇒ Object
128 129 130 131 132 |
# File 'lib/Salut/Browser.rb', line 128 def netServiceBrowserWillSearch sender @searching = true @delegates[__method__].call self if @delegates[__method__] Salut.log.info "Starting search (#{sender.description})" end |
#stop_finding ⇒ Object Also known as: stop_finding_domains, stop_finding_services
Stop searching for things, whether they be domains or services
41 42 43 |
# File 'lib/Salut/Browser.rb', line 41 def stop_finding @browser.stop end |