| Class | DRb::ExtServManager |
| In: |
lib/drb/extservm.rb
|
| Parent: | Object |
| uri | [RW] |
# File lib/drb/extservm.rb, line 25
25: def initialize
26: super()
27: @cond = new_cond
28: @servers = {}
29: @waiting = []
30: @queue = Queue.new
31: @thread = invoke_thread
32: @uri = nil
33: end
# File lib/drb/extservm.rb, line 47
47: def regist(name, ro)
48: synchronize do
49: @servers[name] = ro
50: @cond.signal
51: end
52: self
53: end
# File lib/drb/extservm.rb, line 36
36: def service(name)
37: synchronize do
38: while true
39: server = @servers[name]
40: return server if server && server.alive?
41: invoke_service(name)
42: @cond.wait
43: end
44: end
45: end
# File lib/drb/extservm.rb, line 55
55: def unregist(name)
56: synchronize do
57: @servers.delete(name)
58: end
59: end
# File lib/drb/extservm.rb, line 75
75: def invoke_service_command(name, command)
76: raise "invalid command. name: #{name}" unless command
77: synchronize do
78: return if @servers.include?(name)
79: @servers[name] = false
80: end
81: uri = @uri || DRb.uri
82: if RUBY_PLATFORM =~ /mswin32/ && /NT/ =~ ENV["OS"]
83: system(%Q'cmd /c start "ruby" /b #{command} #{uri} #{name}')
84: else
85: system("#{command} #{uri} #{name} &")
86: end
87: end