class Plum::UpgradeClientSession

Try upgrade to HTTP/2

Public Class Methods

new(socket, config) click to toggle source
# File lib/plum/client/upgrade_client_session.rb, line 4
def initialize(socket, config)
  prepare_session(socket, config)
end

Public Instance Methods

close() click to toggle source
# File lib/plum/client/upgrade_client_session.rb, line 16
def close
  @session.close
end
empty?() click to toggle source
# File lib/plum/client/upgrade_client_session.rb, line 12
def empty?
  @session.empty?
end
request(headers, body, options, &headers_cb) click to toggle source
# File lib/plum/client/upgrade_client_session.rb, line 20
def request(headers, body, options, &headers_cb)
  @session.request(headers, body, options, &headers_cb)
end
succ() click to toggle source
# File lib/plum/client/upgrade_client_session.rb, line 8
def succ
  @session.succ
end

Private Instance Methods

prepare_session(socket, config) click to toggle source
# File lib/plum/client/upgrade_client_session.rb, line 25
def prepare_session(socket, config)
  lcs = LegacyClientSession.new(socket, config)
  opt_res = lcs.request({ ":method" => "OPTIONS",
                          ":path" => "*",
                          "User-Agent" => config[:user_agent],
                          "Connection" => "Upgrade, HTTP2-Settings",
                          "Upgrade" => "h2c",
                          "HTTP2-Settings" => "" }, nil, {})
  lcs.succ until opt_res.finished?

  if opt_res.status == "101"
    lcs.close
    @session = ClientSession.new(socket, config)
    @session.plum.stream(1).set_state(:half_closed_local)
  else
    @session = lcs
  end
end