# File src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb, line 64
      def initialize(request_handler, options = {})
        @request_handler   = request_handler
        @server_socket     = Utils.require_option(options, :server_socket)
        @socket_name       = Utils.require_option(options, :socket_name)
        @protocol          = Utils.require_option(options, :protocol)
        @app_group_name    = Utils.require_option(options, :app_group_name)
        Utils.install_options_as_ivars(self, options,
          :app,
          :union_station_core,
          :connect_password,
          :keepalive_enabled
        )

        @stats_mutex   = Mutex.new
        @interruptable = false
        @iteration     = 0

        if @protocol == :session
          metaclass = class << self; self; end
          metaclass.class_eval do
            alias parse_request parse_session_request
          end
        elsif @protocol == :http
          metaclass = class << self; self; end
          metaclass.class_eval do
            alias parse_request parse_http_request
          end
        else
          raise ArgumentError, "Unknown protocol specified"
        end
      end