class GQTP::Server
Attributes
host[RW]
port[RW]
Public Class Methods
new(options={})
click to toggle source
# File lib/gqtp/server.rb, line 23 def initialize(options={}) @options = options.dup @options[:host] ||= @options[:address] || "0.0.0.0" @options[:port] ||= 10043 @on_request = nil @on_connect = nil end
Public Instance Methods
on_connect(*arguments, &block)
click to toggle source
# File lib/gqtp/server.rb, line 42 def on_connect(*arguments, &block) if block_given? @on_connect = block else client, = arguments if @on_connect @on_connect.call(client) else nil end end end
on_request(*arguments, &block)
click to toggle source
# File lib/gqtp/server.rb, line 55 def on_request(*arguments, &block) if block_given? @on_request = block else request, client, connect_info = arguments @on_request.call(request, client, connect_info) end end
run()
click to toggle source
# File lib/gqtp/server.rb, line 31 def run @backend = create_backend @backend.run do |client| process_request(client, on_connect(client)) end end
shutdown()
click to toggle source
# File lib/gqtp/server.rb, line 38 def shutdown @backend.shutdown end
Private Instance Methods
create_backend()
click to toggle source
# File lib/gqtp/server.rb, line 65 def create_backend # :connection is just for backward compatibility. backend = @options[:backend] || @options[:connection] || :thread begin require "gqtp/backend/#{backend}" rescue LoadError raise ArgumentError, "unknown backend: <#{backend.inspect}>: #{$!}" end module_name = backend.to_s.capitalize backend_module = GQTP::Backend::const_get(module_name) backend_module::Server.new(@options) end
process_request(client, connect_info)
click to toggle source
# File lib/gqtp/server.rb, line 80 def process_request(client, connect_info) client.read(Header.size) do |header| request_header = Header.parse(header) client.read(request_header.size) do |body| request = Request.new(request_header, body) on_request(request, client, connect_info) process_request(client, connect_info) end end end