Module: HTTPX::Plugins::H2C::ConnectionMethods

Defined in:
lib/httpx/plugins/h2c.rb

Instance Method Summary collapse

Instance Method Details

#upgrade_to_h2c(request, response) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/httpx/plugins/h2c.rb', line 73

def upgrade_to_h2c(request, response)
  prev_parser = @parser

  if prev_parser
    prev_parser.reset
    @inflight -= prev_parser.requests.size
  end

  parser_options = @options.merge(max_concurrent_requests: request.options.max_concurrent_requests)
  @parser = H2CParser.new(@write_buffer, parser_options)
  set_parser_callbacks(@parser)
  @inflight += 1
  @parser.upgrade(request, response)
  @upgrade_protocol = :h2c

  if request.options.max_concurrent_requests != @options.max_concurrent_requests
    @options = @options.merge(max_concurrent_requests: nil)
  end

  prev_parser.requests.each do |req|
    req.transition(:idle)
    send(req)
  end
end