class Rack::Lint::Wrapper

def check_hijack_response(headers, env)

#
# streaming.
# It is intended to be used when applications need bi-directional
#
# the server and causes the server to ignore the Body of the response.
# response body. It occurs after the status and headers are written by
# Partial hijack is used for bi-directional streaming of the request and
#
# ==== Partial Hijack
#
def check_hijack_response(headers, env)
  ## If +rack.hijack?+ is present in +env+ and truthy,
  if env[RACK_IS_HIJACK]
    ## an application may set the special response header +rack.hijack+
    if original_hijack = headers[RACK_HIJACK]
      ## to an object that responds to +call+,
      unless original_hijack.respond_to?(:call)
        raise LintError, 'rack.hijack header must respond to #call'
      end
      ## accepting a +stream+ argument.
      return proc do |io|
        original_hijack.call StreamWrapper.new(io)
      end
    end
    ##
    ## After the response status and headers have been sent, this hijack
    ## callback will be invoked with a +stream+ argument which follows the
    ## same interface as outlined in "Streaming Body". Servers must
    ## ignore the +body+ part of the response tuple when the
    ## +rack.hijack+ response header is present. Using an empty +Array+
    ## instance is recommended.
  else
    ##
    ## The special response header +rack.hijack+ must only be set
    ## if the request +env+ has a truthy +rack.hijack?+.
    if headers.key?(RACK_HIJACK)
      raise LintError, 'rack.hijack header must not be present if server does not support hijacking'
    end
  end
  nil
end