Skip to content

Commit

Permalink
playing with drb
Browse files Browse the repository at this point in the history
  • Loading branch information
Sven Fuchs committed Feb 19, 2010
1 parent d291fb9 commit 8199394
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 60 deletions.
18 changes: 10 additions & 8 deletions lib/steam/browser/html_unit/drb.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,27 @@ class Drb
autoload :Client, 'steam/browser/html_unit/drb/client'
autoload :Service, 'steam/browser/html_unit/drb/service'

def initialize
def initialize(connection, options = {})
DRb.start_service
@browser = DRbObject.new(nil, Steam.config[:drb_uri])
@drb = DRbObject.new(nil, Steam.config[:drb_uri])
@connection = connection
@options = options
end

def daemonize(connection = nil, options = {})
Forker.new { start(connection, options) }
def daemonize
Forker.new(@options) { start }
sleep(1) # FIXME
end

def start(connection = nil, options = {})
def start
uri = Steam.config[:drb_uri]
DRb.start_service(uri, HtmlUnit.new(connection, options))
puts "Browser ready and listening at #{uri}"
DRb.start_service(uri, HtmlUnit.new(@connection, @options)) rescue Errno::EADDRINUSE
puts "HtmlUnit ready and listening at #{uri}"
DRb.thread.join
end

def method_missing(method, *args, &block)
@browser.send(method, *args, &block)
@drb.send(method, *args, &block)
end
end
end
Expand Down
20 changes: 0 additions & 20 deletions lib/steam/browser/html_unit/drb/client.rb

This file was deleted.

28 changes: 0 additions & 28 deletions lib/steam/browser/html_unit/drb/service.rb

This file was deleted.

11 changes: 9 additions & 2 deletions lib/steam/browser/html_unit/forker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,25 @@ def initialize(options = {}, &block)
:stdout => $stdout,
:stderr => $stderr
}.merge(options)

recall_pid && kill if options[:restart]

@pid = Kernel.fork do
STDIN.reopen options[:stdin]
STDOUT.reopen options[:stdout]
STDERR.reopen options[:stderr]
block.call
end
# write_pid
at_exit { kill }
write_pid
# at_exit { kill }
end

def interrupt
kill('INT')
end

def kill(signal = 'TERM')
puts "killing #{@pid}"
if running?
Process.kill(Signal.list[signal], @pid)
delete_pid
Expand All @@ -44,6 +47,10 @@ def write_pid
::File.open('/tmp/steam.pid', 'w'){ |f| f.write("#{@pid}") }
end

def recall_pid
@pid = ::File.read('/tmp/steam.pid').to_i rescue nil
end

def delete_pid
::File.delete('/tmp/steam.pid') rescue Errno::ENOENT
end
Expand Down
4 changes: 2 additions & 2 deletions test/playground/drb.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
static = Connection::Static.new(:root => root, :urls => %w(/ /javascripts /stylesheets))
connection = Rack::Cascade.new([static, @app])

browser = Browser::HtmlUnit::Drb.new
browser = Browser::HtmlUnit::Drb.new(connection)

browser.daemonize(connection)
browser.daemonize

browser.request('/index.html')
p browser.response.status
Expand Down

0 comments on commit 8199394

Please sign in to comment.