Module: Async::HTTP::Protocol::HTTP2

Defined in:
lib/async/http/protocol/http2.rb,
lib/async/http/protocol/http2/client.rb,
lib/async/http/protocol/http2/server.rb,
lib/async/http/protocol/http2/stream.rb,
lib/async/http/protocol/http2/promise.rb,
lib/async/http/protocol/http2/request.rb,
lib/async/http/protocol/http2/response.rb,
lib/async/http/protocol/http2/connection.rb

Defined Under Namespace

Modules: Connection, WithPush Classes: Client, Promise, Request, Response, Server, Stream

Constant Summary collapse

VERSION =
"h2"
CLIENT_SETTINGS =
{
  ::Protocol::HTTP2::Settings::ENABLE_PUSH => 0,
  ::Protocol::HTTP2::Settings::MAXIMUM_CONCURRENT_STREAMS => 256,
  ::Protocol::HTTP2::Settings::MAXIMUM_FRAME_SIZE => 0x100000,
  ::Protocol::HTTP2::Settings::INITIAL_WINDOW_SIZE => 0x7FFFFFFF,
  ::Protocol::HTTP2::Settings::ENABLE_CONNECT_PROTOCOL => 1,
}
SERVER_SETTINGS =
{
  # We choose a lower maximum concurrent streams to avoid overloading a single connection/thread.
  ::Protocol::HTTP2::Settings::MAXIMUM_CONCURRENT_STREAMS => 32,
  ::Protocol::HTTP2::Settings::MAXIMUM_FRAME_SIZE => 0x100000,
  ::Protocol::HTTP2::Settings::INITIAL_WINDOW_SIZE => 0x7FFFFFFF,
  ::Protocol::HTTP2::Settings::ENABLE_CONNECT_PROTOCOL => 1,
}
HTTPS =
'https'.freeze
SCHEME =
':scheme'.freeze
METHOD =
':method'.freeze
PATH =
':path'.freeze
AUTHORITY =
':authority'.freeze
STATUS =
':status'.freeze
PROTOCOL =
':protocol'.freeze
CONTENT_LENGTH =
'content-length'

Class Method Summary collapse

Class Method Details

.bidirectional?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/async/http/protocol/http2.rb', line 30

def self.bidirectional?
  true
end

.client(stream, settings = CLIENT_SETTINGS) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/async/http/protocol/http2.rb', line 50

def self.client(stream, settings = CLIENT_SETTINGS)
  client = Client.new(stream)
  
  client.send_connection_preface(settings)
  client.start_connection
  
  return client
end

.server(stream, settings = SERVER_SETTINGS) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/async/http/protocol/http2.rb', line 59

def self.server(stream, settings = SERVER_SETTINGS)
  server = Server.new(stream)
  
  server.read_connection_preface(settings)
  server.start_connection
  
  return server
end