class Dizby::ConnectionWorker

Public Class Methods

new(server, conn) click to toggle source
# File lib/dizby/worker/connection.rb, line 11
def initialize(server, conn)
  @server = server
  @conn = conn

  @thread = Thread.start { process_requests }
end

Public Instance Methods

close() click to toggle source
# File lib/dizby/worker/connection.rb, line 18
def close
  @conn.close unless @conn.closed?

  # TODO: @thread gets set to nil for some reason...
  @thread.join if @thread
end

Private Instance Methods

process_request() click to toggle source
# File lib/dizby/worker/connection.rb, line 35
def process_request
  succ, result = InvokeMethod.new(@server, *@conn.recv_request).perform

  @server.log.backtrace(result) unless succ

  begin
    @conn.send_reply(succ, result)
  rescue
    @server.log.backtrace($!)
  end

  succ
end
process_requests() click to toggle source
# File lib/dizby/worker/connection.rb, line 27
def process_requests
  loop { break unless process_request }
rescue RemoteServerShutdown
  @server.log.debug("lost connection to server at #{@conn.remote_uri}")
ensure
  @conn.close unless @conn.closed?
end