1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/lib/drb/extserv.rb
drbrain 90e69dfdaf * lib/drb/drb.rb: Improved documentation by adding or hiding methods.
* lib/drb/eq.rb:  ditto.
* lib/drb/extserv.rb:  ditto.
* lib/drb/gw.rb:  ditto.
* lib/drb/invokemethod.rb:  ditto.
* lib/drb/observer.rb:  ditto.
* lib/drb/ssl.rb:  ditto.
* lib/drb/timeridconv.rb:  ditto.
* lib/drb/unix.rb:  ditto.

* sample/drb/gw_cu.rb:  Fixed bug in DRb gateway sample.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-25 03:25:39 +00:00

73 lines
1.2 KiB
Ruby

=begin
external service
Copyright (c) 2000,2002 Masatoshi SEKI
=end
require 'drb/drb'
require 'monitor'
module DRb
class ExtServ
include MonitorMixin
include DRbUndumped
def initialize(there, name, server=nil)
super()
@server = server || DRb::primary_server
@name = name
ro = DRbObject.new(nil, there)
synchronize do
@invoker = ro.regist(name, DRbObject.new(self, @server.uri))
end
end
attr_reader :server
def front
DRbObject.new(nil, @server.uri)
end
def stop_service
synchronize do
@invoker.unregist(@name)
server = @server
@server = nil
server.stop_service
true
end
end
def alive?
@server ? @server.alive? : false
end
end
end
# :stopdoc:
if __FILE__ == $0
class Foo
include DRbUndumped
def initialize(str)
@str = str
end
def hello(it)
"#{it}: #{self}"
end
def to_s
@str
end
end
cmd = ARGV.shift
case cmd
when 'itest1', 'itest2'
front = Foo.new(cmd)
manager = DRb::DRbServer.new(nil, front)
es = DRb::ExtServ.new(ARGV.shift, ARGV.shift, manager)
es.server.thread.join
end
end