class RseProxy::PassThru

Public Class Methods

new(serversx=[], servers: serversx, log: nil ) click to toggle source
# File lib/rse.rb, line 99
def initialize(serversx=[], servers: serversx, log: nil )
  
  DRb.start_service
  
  @servers = servers.map do |x|
    
    host, port = x.is_a?(Hash) ? [x[:host], x[:port]] : x        
    
  end
  
  @log = Logger.new log, 'daily' if log
  
end

Public Instance Methods

delete() click to toggle source
# File lib/rse.rb, line 113
def delete()
  fetch_server() { |rse| rse.delete }
end
fetch_server() { |rse| ... } click to toggle source
# File lib/rse.rb, line 142
def fetch_server()
  
  begin
    
    servers = @servers.clone
      
    server = servers.shift
    host, port = server
    rse = DRbObject.new_with_uri("druby://#{host}:#{port}")    
    yield(rse) if block_given?
    
  rescue
    
    puts ($!).inspect
    @log.warn "server #{host}:#{port} down" if @log
    retry if servers.any?        
    
  end
  
end
get() click to toggle source
# File lib/rse.rb, line 117
def get()
  fetch_server() { |rse| rse.get }
end
package_methods(name) click to toggle source
# File lib/rse.rb, line 129
def package_methods(name)
  fetch_server() { |rse| rse.package_methods(name) }
end
post() click to toggle source
# File lib/rse.rb, line 125
def post()
  fetch_server() { |rse| rse.post }
end
put() click to toggle source
# File lib/rse.rb, line 121
def put()
  fetch_server() { |rse| rse.put }
end
run_job(package, job, params={}, *args) click to toggle source
# File lib/rse.rb, line 133
def run_job(package, job, params={}, *args)
  
  @log.info "package: %s, job: %s, params: %s, args: %s" \
      % [package, job, params, args] if @log
  
  fetch_server() { |rse| rse.run_job package, job, params, *args    }
  
end
type() click to toggle source
# File lib/rse.rb, line 163
def type()
  fetch_server() { |rse| rse.type }
end
type=(s) click to toggle source
# File lib/rse.rb, line 167
def type=(s)
  fetch_server() { |rse| rse.type=(s) }
end

Private Instance Methods

method_missing(method_name, *args) click to toggle source
# File lib/rse.rb, line 173
def method_missing(method_name, *args)    
  fetch_server() { |rse| rse.get.method(method_name).call(*args) }
end