dnssd 1.4 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
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