class GQTP::Proxy
Attributes
listen_host[RW]
listen_port[RW]
upstream_host[RW]
upstream_port[RW]
Public Class Methods
new(options={})
click to toggle source
# File lib/gqtp/proxy.rb, line 24 def initialize(options={}) @options = options.dup @listen_host = @options[:listen_host] || @options[:listen_address] @listen_host ||= "0.0.0.0" @listen_port = @options[:listen_port] || 10043 @upstream_host = @options[:upstream_host] || @options[:upstream_address] @upstream_host ||= "127.0.0.1" @upstream_port = @options[:upstream_port] || 10043 # :connection is just for backward compatibility. @backend = @options[:backend] || @options[:connection] || :thread @server = Server.new(:host => @listen_host, :port => @listen_port, :backend => @backend) end
Public Instance Methods
run()
click to toggle source
# File lib/gqtp/proxy.rb, line 39 def run @server.on_connect do |client| create_backend end @server.on_request do |request, client, backend| backend.write(request.header.pack, request.body) do backend.read(Header.size) do |header| response_header = Header.parse(header) backend.read(response_header.size) do |body| client.write(header, body) do end end end end end @server.run end
shutdown()
click to toggle source
# File lib/gqtp/proxy.rb, line 57 def shutdown @server.shutdown end
Private Instance Methods
create_backend()
click to toggle source
# File lib/gqtp/proxy.rb, line 62 def create_backend begin require "gqtp/backend/#{@backend}" rescue LoadError raise ArgumentError, "unknown backend: <#{@backend.inspect}>: #{$!}" end require "gqtp/backend/#{@backend}" module_name = @backend.to_s.capitalize backend_module = GQTP::Backend::const_get(module_name) backend_module::Client.new(:host => @upstream_host, :port => @upstream_port) end