dnssd 1.4 → 2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data.tar.gz.sig CHANGED
Binary file
File without changes
@@ -1,3 +1,8 @@
1
+ === 2.0 / 2011-03-02
2
+
3
+ * Major enhancment
4
+ * DNSSD::Service#process now automatically stops the DNSSD::Service.
5
+
1
6
  === 1.4 / 2010-09-07
2
7
 
3
8
  * Minor enhancements
data/Rakefile CHANGED
@@ -6,6 +6,7 @@ require 'hoe'
6
6
  Hoe.plugin :minitest
7
7
  Hoe.plugin :email
8
8
  Hoe.plugin :git
9
+ Hoe.plugin :compiler
9
10
 
10
11
  HOE = Hoe.spec 'dnssd' do
11
12
  self.rubyforge_name = 'dnssd'
@@ -17,22 +18,7 @@ HOE = Hoe.spec 'dnssd' do
17
18
  developer 'Charles Mills', ''
18
19
  developer 'Rich Kilmer', ''
19
20
 
20
- spec_extras[:extensions] = 'ext/dnssd/extconf.rb'
21
-
22
21
  clean_globs << 'lib/dnssd/*.{so,bundle,dll}'
23
-
24
- extra_dev_deps << ['hoe-seattlerb', '~> 1.2']
25
- extra_dev_deps << ['minitest', '~> 1.4']
26
- extra_dev_deps << ['rake-compiler', '~> 0.6']
27
- end
28
-
29
- require 'rake/extensiontask'
30
-
31
- Rake::ExtensionTask.new 'dnssd', HOE.spec do |ext|
32
- ext.lib_dir = File.join 'lib', 'dnssd'
33
- ext.config_options << '--with-warnings'
34
22
  end
35
23
 
36
- task :test => :compile
37
-
38
24
  # vim: syntax=Ruby
@@ -13,7 +13,7 @@ module DNSSD
13
13
  ##
14
14
  # The version of DNSSD you're using.
15
15
 
16
- VERSION = '1.4'
16
+ VERSION = '2.0'
17
17
 
18
18
  ##
19
19
  # Registers +socket+ with DNSSD as +name+. If +service+ is omitted it is
@@ -65,30 +65,26 @@ class DNSSD::Reply::Resolve < DNSSD::Reply
65
65
 
66
66
  service = DNSSD::Service.new
67
67
 
68
- begin
69
- service.getaddrinfo target, addrinfo_protocol, addrinfo_flags,
70
- @interface do |addrinfo|
71
- address = addrinfo.address
72
-
73
- begin
74
- socket = nil
75
-
76
- case protocol
77
- when 'tcp' then
78
- socket = TCPSocket.new address, port
79
- when 'udp' then
80
- socket = UDPSocket.new
81
- socket.connect address, port
82
- end
83
-
84
- return socket
85
- rescue
86
- next if addrinfo.flags.more_coming?
87
- raise
68
+ service.getaddrinfo target, addrinfo_protocol, addrinfo_flags,
69
+ @interface do |addrinfo|
70
+ address = addrinfo.address
71
+
72
+ begin
73
+ socket = nil
74
+
75
+ case protocol
76
+ when 'tcp' then
77
+ socket = TCPSocket.new address, port
78
+ when 'udp' then
79
+ socket = UDPSocket.new
80
+ socket.connect address, port
88
81
  end
82
+
83
+ return socket
84
+ rescue
85
+ next if addrinfo.flags.more_coming?
86
+ raise
89
87
  end
90
- ensure
91
- service.stop
92
88
  end
93
89
  end
94
90
 
@@ -1,10 +1,11 @@
1
1
  require 'thread'
2
2
 
3
3
  ##
4
- # A DNSSD::Service may be used for one DNS-SD call at a time. Between calls
5
- # the service must be stopped. A single service can be reused multiple times.
4
+ # A DNSSD::Service may be used for one DNS-SD call at a time. The service is
5
+ # automatically stopped after calling. A single service can not be reused
6
+ # multiple times.
6
7
  #
7
- # DNSSD::Service provides the raw DNS-SD functions via the _ variants.
8
+ # DNSSD::Service provides the raw DNS-SD functions via the +_+ variants.
8
9
 
9
10
  class DNSSD::Service
10
11
 
@@ -151,6 +152,9 @@ class DNSSD::Service
151
152
 
152
153
  ##
153
154
  # Yields results from the mDNS daemon, blocking until data is available.
155
+ # Use break or return when you wish to stop receiving results.
156
+ #
157
+ # The service is automatically stopped after calling this method.
154
158
 
155
159
  def process # :yields: DNSSD::Result
156
160
  @thread = Thread.current
@@ -167,6 +171,8 @@ class DNSSD::Service
167
171
  # raised when we jump out of DNSServiceProcess() while it's waiting for a
168
172
  # response
169
173
  self
174
+ ensure
175
+ stop unless stopped?
170
176
  end
171
177
 
172
178
  ##
@@ -232,9 +238,6 @@ class DNSSD::Service
232
238
  # record, all contained in the DNSSD::Reply object passed to the required
233
239
  # block.
234
240
  #
235
- # The returned service can be used to control when to stop resolving the
236
- # service (see DNSSD::Service#stop).
237
- #
238
241
  # service.resolve "foo bar", "_http._tcp", "local" do |r|
239
242
  # p r
240
243
  # end
@@ -8,13 +8,10 @@ resolver = DNSSD.resolve ARGV.shift, '_http._tcp', 'local' do |reply|
8
8
  addresses = []
9
9
 
10
10
  service = DNSSD::Service.new
11
- begin
12
- service.getaddrinfo reply.target do |addrinfo|
13
- addresses << addrinfo.address
14
- break unless addrinfo.flags.more_coming?
15
- end
16
- ensure
17
- service.stop
11
+
12
+ service.getaddrinfo reply.target do |addrinfo|
13
+ addresses << addrinfo.address
14
+ break unless addrinfo.flags.more_coming?
18
15
  end
19
16
 
20
17
  puts "Addresses for #{reply.target}:\n#{addresses.join "\n"}"
@@ -5,7 +5,7 @@ Thread.abort_on_exception = true
5
5
  browser = DNSSD.browse '_growl._tcp' do |b|
6
6
  DNSSD.resolve b.name, b.type, b.domain do |r|
7
7
  puts "#{b.name} of #{b.type} in #{b.domain} => #{r.target}:#{r.port} on #{b.interface} txt #{r.text_record.inspect}"
8
- r.service.stop
8
+ break
9
9
  end
10
10
  end
11
11
 
@@ -20,14 +20,11 @@ browser.browse '_blackjack._tcp' do |reply|
20
20
  end.each do |_, service|
21
21
  next unless service.flags.add?
22
22
 
23
- resolver = DNSSD::Service.new
24
- resolver.resolve service do |r|
23
+ DNSSD::Service.new.resolve service do |r|
25
24
  puts "#{r.name} on #{r.target}:#{r.port}"
26
25
  puts "\t#{r.text_record.inspect}" unless r.text_record.empty?
27
26
  break unless r.flags.more_coming?
28
27
  end
29
-
30
- resolver.stop
31
28
  end
32
29
 
33
30
  services.clear
@@ -9,7 +9,7 @@ class ChatNameResolver
9
9
  Thread.new reply do |reply|
10
10
  DNSSD.resolve reply.name, reply.type, reply.domain do |resolve_reply|
11
11
  puts "Adding: #{resolve_reply.inspect}"
12
- resolve_reply.service.stop
12
+ break
13
13
  end
14
14
  end
15
15
  end
@@ -17,7 +17,7 @@ class ChatNameResolver
17
17
  Thread.new reply do |reply|
18
18
  DNSSD.resolve reply.name, reply.type, reply.domain do |resolve_reply|
19
19
  puts "Removing: #{resolve_reply.inspect}"
20
- resolve_reply.service.stop
20
+ break
21
21
  end
22
22
  end
23
23
  end
@@ -4,22 +4,23 @@ require 'dnssd'
4
4
  class TestDNSSDService < MiniTest::Unit::TestCase
5
5
 
6
6
  def test_class_get_property
7
+ skip 'DNSSD::Service::get_property not defined' unless
8
+ DNSSD::Service.respond_to? :get_property
9
+
7
10
  assert_kind_of Numeric,
8
11
  DNSSD::Service.get_property(DNSSD::Service::DaemonVersion)
9
- end if DNSSD::Service.respond_to? :get_property
12
+ end
10
13
 
11
14
  def test_class_getaddrinfo
12
15
  service = DNSSD::Service.new
13
16
 
14
17
  addresses = []
15
- begin
16
- service.getaddrinfo 'localhost' do |addrinfo|
17
- addresses << addrinfo.address
18
- break unless addrinfo.flags.more_coming?
19
- end
20
- ensure
21
- service.stop
18
+
19
+ service.getaddrinfo 'localhost' do |addrinfo|
20
+ addresses << addrinfo.address
21
+ break unless addrinfo.flags.more_coming?
22
22
  end
23
+
23
24
  assert addresses.index('127.0.0.1')
24
25
  end
25
26
 
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnssd
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease: false
4
+ hash: 3
5
+ prerelease:
6
6
  segments:
7
- - 1
8
- - 4
9
- version: "1.4"
7
+ - 2
8
+ - 0
9
+ version: "2.0"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Eric Hodel
@@ -40,102 +40,56 @@ cert_chain:
40
40
  x52qPcexcYZR7w==
41
41
  -----END CERTIFICATE-----
42
42
 
43
- date: 2010-09-07 00:00:00 -07:00
43
+ date: 2011-03-03 00:00:00 -08:00
44
44
  default_executable:
45
45
  dependencies:
46
46
  - !ruby/object:Gem::Dependency
47
- name: rubyforge
47
+ name: minitest
48
48
  prerelease: false
49
49
  requirement: &id001 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- hash: 7
54
+ hash: 11
55
55
  segments:
56
56
  - 2
57
57
  - 0
58
- - 4
59
- version: 2.0.4
60
- type: :development
61
- version_requirements: *id001
62
- - !ruby/object:Gem::Dependency
63
- name: minitest
64
- prerelease: false
65
- requirement: &id002 !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 1
73
- - 5
74
- - 0
75
- version: 1.5.0
76
- type: :development
77
- version_requirements: *id002
78
- - !ruby/object:Gem::Dependency
79
- name: hoe-seattlerb
80
- prerelease: false
81
- requirement: &id003 !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ~>
85
- - !ruby/object:Gem::Version
86
- hash: 11
87
- segments:
88
- - 1
89
58
  - 2
90
- version: "1.2"
59
+ version: 2.0.2
91
60
  type: :development
92
- version_requirements: *id003
93
- - !ruby/object:Gem::Dependency
94
- name: minitest
95
- prerelease: false
96
- requirement: &id004 !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ~>
100
- - !ruby/object:Gem::Version
101
- hash: 7
102
- segments:
103
- - 1
104
- - 4
105
- version: "1.4"
106
- type: :development
107
- version_requirements: *id004
61
+ version_requirements: *id001
108
62
  - !ruby/object:Gem::Dependency
109
63
  name: rake-compiler
110
64
  prerelease: false
111
- requirement: &id005 !ruby/object:Gem::Requirement
65
+ requirement: &id002 !ruby/object:Gem::Requirement
112
66
  none: false
113
67
  requirements:
114
68
  - - ~>
115
69
  - !ruby/object:Gem::Version
116
- hash: 7
70
+ hash: 5
117
71
  segments:
118
72
  - 0
119
- - 6
120
- version: "0.6"
73
+ - 7
74
+ version: "0.7"
121
75
  type: :development
122
- version_requirements: *id005
76
+ version_requirements: *id002
123
77
  - !ruby/object:Gem::Dependency
124
78
  name: hoe
125
79
  prerelease: false
126
- requirement: &id006 !ruby/object:Gem::Requirement
80
+ requirement: &id003 !ruby/object:Gem::Requirement
127
81
  none: false
128
82
  requirements:
129
83
  - - ">="
130
84
  - !ruby/object:Gem::Version
131
- hash: 21
85
+ hash: 43
132
86
  segments:
133
87
  - 2
134
- - 6
135
- - 1
136
- version: 2.6.1
88
+ - 9
89
+ - 0
90
+ version: 2.9.0
137
91
  type: :development
138
- version_requirements: *id006
92
+ version_requirements: *id003
139
93
  description: |-
140
94
  DNS Service Discovery (aka Bonjour, MDNS) API for Ruby. Implements browsing,
141
95
  resolving, registration and domain enumeration. Supports avahi's DNSSD
@@ -199,6 +153,7 @@ files:
199
153
  - test/test_dnssd_reply_resolve.rb
200
154
  - test/test_dnssd_service.rb
201
155
  - test/test_dnssd_text_record.rb
156
+ - .gemtest
202
157
  has_rdoc: true
203
158
  homepage: http://rubyforge.org/projects/dnssd
204
159
  licenses: []
@@ -230,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
185
  requirements: []
231
186
 
232
187
  rubyforge_project: dnssd
233
- rubygems_version: 1.3.7
188
+ rubygems_version: 1.6.0
234
189
  signing_key:
235
190
  specification_version: 3
236
191
  summary: DNS Service Discovery (aka Bonjour, MDNS) API for Ruby
metadata.gz.sig CHANGED
Binary file