X7ROOT File Manager
Current Path:
/opt/alt/ruby34/share/gems/gems/drb-2.2.1/lib/drb
opt
/
alt
/
ruby34
/
share
/
gems
/
gems
/
drb-2.2.1
/
lib
/
drb
/
??
..
??
acl.rb
(4.61 KB)
??
drb.rb
(57.63 KB)
??
eq.rb
(275 B)
??
extserv.rb
(840 B)
??
extservm.rb
(1.8 KB)
??
gw.rb
(3 KB)
??
invokemethod.rb
(777 B)
??
observer.rb
(671 B)
??
ssl.rb
(11.89 KB)
??
timeridconv.rb
(2.16 KB)
??
unix.rb
(2.78 KB)
??
version.rb
(35 B)
??
weakidconv.rb
(1.12 KB)
Editing: extservm.rb
# frozen_string_literal: false =begin external service manager Copyright (c) 2000 Masatoshi SEKI =end require_relative 'drb' require 'monitor' module DRb class ExtServManager include DRbUndumped include MonitorMixin @@command = {} def self.command @@command end def self.command=(cmd) @@command = cmd end def initialize super() @cond = new_cond @servers = {} @waiting = [] @queue = Thread::Queue.new @thread = invoke_thread @uri = nil end attr_accessor :uri def service(name) synchronize do while true server = @servers[name] return server if server && server.alive? # server may be `false' invoke_service(name) @cond.wait end end end def register(name, ro) synchronize do @servers[name] = ro @cond.signal end self end alias regist register def unregister(name) synchronize do @servers.delete(name) end end alias unregist unregister private def invoke_thread Thread.new do while name = @queue.pop invoke_service_command(name, @@command[name]) end end end def invoke_service(name) @queue.push(name) end def invoke_service_command(name, command) raise "invalid command. name: #{name}" unless command synchronize do return if @servers.include?(name) @servers[name] = false end uri = @uri || DRb.uri if command.respond_to? :to_ary command = command.to_ary + [uri, name] pid = spawn(*command) else pid = spawn("#{command} #{uri} #{name}") end th = Process.detach(pid) th[:drb_service] = name th end end end
Upload File
Create Folder