1# frozen_string_literal: false 2=begin 3 external service 4 Copyright (c) 2000,2002 Masatoshi SEKI 5=end 6 7require_relative 'drb' 8require 'monitor' 9 10module DRb 11 class ExtServ 12 include MonitorMixin 13 include DRbUndumped 14 15 def initialize(there, name, server=nil) 16 super() 17 @server = server || DRb::primary_server 18 @name = name 19 ro = DRbObject.new(nil, there) 20 synchronize do 21 @invoker = ro.regist(name, DRbObject.new(self, @server.uri)) 22 end 23 end 24 attr_reader :server 25 26 def front 27 DRbObject.new(nil, @server.uri) 28 end 29 30 def stop_service 31 synchronize do 32 @invoker.unregist(@name) 33 server = @server 34 @server = nil 35 server.stop_service 36 true 37 end 38 end 39 40 def alive? 41 @server ? @server.alive? : false 42 end 43 end 44end 45