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 +0 -0
- data/.gemtest +0 -0
- data/History.txt +5 -0
- data/Rakefile +1 -15
- data/lib/dnssd.rb +1 -1
- data/lib/dnssd/reply/resolve.rb +18 -22
- data/lib/dnssd/service.rb +9 -6
- data/sample/getaddrinfo.rb +4 -7
- data/sample/growl.rb +1 -1
- data/sample/resolve.rb +1 -4
- data/sample/resolve_ichat.rb +2 -2
- data/test/test_dnssd_service.rb +9 -8
- metadata +23 -68
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/.gemtest
ADDED
File without changes
|
data/History.txt
CHANGED
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
|
data/lib/dnssd.rb
CHANGED
data/lib/dnssd/reply/resolve.rb
CHANGED
@@ -65,30 +65,26 @@ class DNSSD::Reply::Resolve < DNSSD::Reply
|
|
65
65
|
|
66
66
|
service = DNSSD::Service.new
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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
|
|
data/lib/dnssd/service.rb
CHANGED
@@ -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.
|
5
|
-
#
|
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
|
data/sample/getaddrinfo.rb
CHANGED
@@ -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
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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"}"
|
data/sample/growl.rb
CHANGED
@@ -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
|
-
|
8
|
+
break
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
data/sample/resolve.rb
CHANGED
@@ -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
|
-
|
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
|
data/sample/resolve_ichat.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
20
|
+
break
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/test/test_dnssd_service.rb
CHANGED
@@ -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
|
12
|
+
end
|
10
13
|
|
11
14
|
def test_class_getaddrinfo
|
12
15
|
service = DNSSD::Service.new
|
13
16
|
|
14
17
|
addresses = []
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 3
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: "
|
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:
|
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:
|
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:
|
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:
|
59
|
+
version: 2.0.2
|
91
60
|
type: :development
|
92
|
-
version_requirements: *
|
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: &
|
65
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
112
66
|
none: false
|
113
67
|
requirements:
|
114
68
|
- - ~>
|
115
69
|
- !ruby/object:Gem::Version
|
116
|
-
hash:
|
70
|
+
hash: 5
|
117
71
|
segments:
|
118
72
|
- 0
|
119
|
-
-
|
120
|
-
version: "0.
|
73
|
+
- 7
|
74
|
+
version: "0.7"
|
121
75
|
type: :development
|
122
|
-
version_requirements: *
|
76
|
+
version_requirements: *id002
|
123
77
|
- !ruby/object:Gem::Dependency
|
124
78
|
name: hoe
|
125
79
|
prerelease: false
|
126
|
-
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:
|
85
|
+
hash: 43
|
132
86
|
segments:
|
133
87
|
- 2
|
134
|
-
-
|
135
|
-
-
|
136
|
-
version: 2.
|
88
|
+
- 9
|
89
|
+
- 0
|
90
|
+
version: 2.9.0
|
137
91
|
type: :development
|
138
|
-
version_requirements: *
|
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.
|
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
|