2003-06-18 19:45:12 +04:00
|
|
|
=begin
|
|
|
|
external service
|
2011-05-19 04:07:25 +04:00
|
|
|
Copyright (c) 2000,2002 Masatoshi SEKI
|
2003-06-18 19:45:12 +04:00
|
|
|
=end
|
|
|
|
|
|
|
|
require 'drb/drb'
|
2007-11-26 17:24:29 +03:00
|
|
|
require 'monitor'
|
2003-06-18 19:45:12 +04:00
|
|
|
|
|
|
|
module DRb
|
|
|
|
class ExtServ
|
2007-11-26 17:24:29 +03:00
|
|
|
include MonitorMixin
|
2003-06-18 19:45:12 +04:00
|
|
|
include DRbUndumped
|
|
|
|
|
|
|
|
def initialize(there, name, server=nil)
|
2007-11-26 17:24:29 +03:00
|
|
|
super()
|
2003-06-18 19:45:12 +04:00
|
|
|
@server = server || DRb::primary_server
|
|
|
|
@name = name
|
|
|
|
ro = DRbObject.new(nil, there)
|
2007-11-26 17:24:29 +03:00
|
|
|
synchronize do
|
|
|
|
@invoker = ro.regist(name, DRbObject.new(self, @server.uri))
|
|
|
|
end
|
2003-06-18 19:45:12 +04:00
|
|
|
end
|
|
|
|
attr_reader :server
|
|
|
|
|
|
|
|
def front
|
|
|
|
DRbObject.new(nil, @server.uri)
|
|
|
|
end
|
|
|
|
|
|
|
|
def stop_service
|
2007-11-26 17:24:29 +03:00
|
|
|
synchronize do
|
|
|
|
@invoker.unregist(@name)
|
|
|
|
server = @server
|
|
|
|
@server = nil
|
|
|
|
server.stop_service
|
|
|
|
true
|
|
|
|
end
|
2003-06-18 19:45:12 +04:00
|
|
|
end
|
|
|
|
|
|
|
|
def alive?
|
|
|
|
@server ? @server.alive? : false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|