Skip to content

Commit

Permalink
add mdns for a bit of fun
Browse files Browse the repository at this point in the history
  • Loading branch information
tyler committed Aug 19, 2011
1 parent 81e8fb9 commit 5e7af0e
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 0 deletions.
34 changes: 34 additions & 0 deletions bin/distributed_demo
@@ -0,0 +1,34 @@
#!/usr/bin/env ruby

require 'client'
require 'socket'
require 'net/dns/mdns-sd'

Thread.abort_on_exception = true

if ARGV[0]
Dist::Client.new(ARGV[0])
else
address = nil

puts "Searching for server..."
service = Net::DNS::MDNSSD.browse('_demo_server._tcp') do |r|
Net::DNS::MDNSSD.resolve(r.name, r.type, r.domain) do |rr|
puts "Found!"
service.stop
address = "#{rr.target}:#{rr.port}"
end
end
50.times do
sleep 0.1
break if address
end

if address
Dist::Client.new(address)
else
puts "Couldn't find a demo server."
end
end


18 changes: 18 additions & 0 deletions bin/distributed_demo_server
@@ -0,0 +1,18 @@
#!/usr/bin/env ruby

require 'server'

Thread.abort_on_exception = true

require 'socket'
require 'net/dns/mdns-sd'

record = { 'description' => 'distributed_demo_server' }
Net::DNS::MDNSSD.register(Socket.gethostname, '_demo_server._tcp', 'local', ARGV[0].to_i, record) do |reply|
p reply
end


server = Dist::Server.new(ARGV[0].to_i)
Thread.new { server.listen }
Rack::Handler::Thin.run MasterApp.new(server), :Port => 9505
29 changes: 29 additions & 0 deletions distributed_dem.gemspec
@@ -0,0 +1,29 @@
# -*- encoding: utf-8 -*-

Gem::Specification.new do |s|
s.name = %q{distributed_demo}
s.version = "1.0.3"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = [%q{Tyler McMullen}]
s.date = %q{2010-03-25}
s.description = %q{Demo for my talk at the Scottish Ruby Conference: Distributed Systems with Rack.}
s.executables = [%q{distributed_demo}, %q{distributed_demo_server}]
s.files = [%q{bin/distributed_demo}, %q{bin/distributed_demo_server}]
s.require_paths = [%q{lib}]
s.rubygems_version = %q{1.8.6}
s.summary = %q{Distributed systems demo}

s.add_dependency 'mongrel'
s.add_dependency 'rack'
s.add_dependency 'net-mdns'

if s.respond_to? :specification_version then
s.specification_version = 3

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
else
end
else
end
end

0 comments on commit 5e7af0e

Please sign in to comment.