Class: Protocol::HTTP2::Settings
- Inherits:
-
Object
- Object
- Protocol::HTTP2::Settings
- Defined in:
- lib/protocol/http2/settings_frame.rb
Constant Summary collapse
- HEADER_TABLE_SIZE =
0x1
- ENABLE_PUSH =
0x2
- MAXIMUM_CONCURRENT_STREAMS =
0x3
- INITIAL_WINDOW_SIZE =
0x4
- MAXIMUM_FRAME_SIZE =
0x5
- MAXIMUM_HEADER_LIST_SIZE =
0x6
- ENABLE_CONNECT_PROTOCOL =
0x8
- ASSIGN =
[ nil, :header_table_size=, :enable_push=, :maximum_concurrent_streams=, :initial_window_size=, :maximum_frame_size=, :maximum_header_list_size=, nil, :enable_connect_protocol=, ]
Instance Attribute Summary collapse
-
#enable_connect_protocol ⇒ Object
Returns the value of attribute enable_connect_protocol.
-
#enable_push ⇒ Object
This setting can be used to disable server push.
-
#header_table_size ⇒ Object
Allows the sender to inform the remote endpoint of the maximum size of the header compression table used to decode header blocks, in octets.
-
#initial_window_size ⇒ Object
Indicates the sender’s initial window size (in octets) for stream-level flow control.
-
#maximum_concurrent_streams ⇒ Object
Indicates the maximum number of concurrent streams that the sender will allow.
-
#maximum_frame_size ⇒ Object
Indicates the size of the largest frame payload that the sender is willing to receive, in octets.
-
#maximum_header_list_size ⇒ Object
This advisory setting informs a peer of the maximum size of header list that the sender is prepared to accept, in octets.
Instance Method Summary collapse
- #difference(other) ⇒ Object
- #enable_connect_protocol? ⇒ Boolean
- #enable_push? ⇒ Boolean
-
#initialize ⇒ Settings
constructor
A new instance of Settings.
- #update(changes) ⇒ Object
Constructor Details
#initialize ⇒ Settings
Returns a new instance of Settings.
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/protocol/http2/settings_frame.rb', line 93 def initialize # These limits are taken from the RFC: # https://tools.ietf.org/html/rfc7540#section-6.5.2 @header_table_size = 4096 @enable_push = 1 @maximum_concurrent_streams = 0xFFFFFFFF @initial_window_size = 0xFFFF # 2**16 - 1 @maximum_frame_size = 0x4000 # 2**14 @maximum_header_list_size = 0xFFFFFFFF @enable_connect_protocol = 0 end |
Instance Attribute Details
#enable_connect_protocol ⇒ Object
Returns the value of attribute enable_connect_protocol.
79 80 81 |
# File 'lib/protocol/http2/settings_frame.rb', line 79 def enable_connect_protocol @enable_connect_protocol end |
#enable_push ⇒ Object
This setting can be used to disable server push. An endpoint MUST NOT send a PUSH_PROMISE frame if it receives this parameter set to a value of 0.
35 36 37 |
# File 'lib/protocol/http2/settings_frame.rb', line 35 def enable_push @enable_push end |
#header_table_size ⇒ Object
Allows the sender to inform the remote endpoint of the maximum size of the header compression table used to decode header blocks, in octets.
32 33 34 |
# File 'lib/protocol/http2/settings_frame.rb', line 32 def header_table_size @header_table_size end |
#initial_window_size ⇒ Object
Indicates the sender’s initial window size (in octets) for stream-level flow control.
53 54 55 |
# File 'lib/protocol/http2/settings_frame.rb', line 53 def initial_window_size @initial_window_size end |
#maximum_concurrent_streams ⇒ Object
Indicates the maximum number of concurrent streams that the sender will allow.
50 51 52 |
# File 'lib/protocol/http2/settings_frame.rb', line 50 def maximum_concurrent_streams @maximum_concurrent_streams end |
#maximum_frame_size ⇒ Object
Indicates the size of the largest frame payload that the sender is willing to receive, in octets.
64 65 66 |
# File 'lib/protocol/http2/settings_frame.rb', line 64 def maximum_frame_size @maximum_frame_size end |
#maximum_header_list_size ⇒ Object
This advisory setting informs a peer of the maximum size of header list that the sender is prepared to accept, in octets.
77 78 79 |
# File 'lib/protocol/http2/settings_frame.rb', line 77 def maximum_header_list_size @maximum_header_list_size end |
Instance Method Details
#difference(other) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/protocol/http2/settings_frame.rb', line 113 def difference(other) changes = [] if @header_table_size != other.header_table_size changes << [HEADER_TABLE_SIZE, @header_table_size] end if @enable_push != other.enable_push changes << [ENABLE_PUSH, @enable_push] end if @maximum_concurrent_streams != other.maximum_concurrent_streams changes << [MAXIMUM_CONCURRENT_STREAMS, @maximum_concurrent_streams] end if @initial_window_size != other.initial_window_size changes << [INITIAL_WINDOW_SIZE, @initial_window_size] end if @maximum_frame_size != other.maximum_frame_size changes << [MAXIMUM_FRAME_SIZE, @maximum_frame_size] end if @maximum_header_list_size != other.maximum_header_list_size changes << [MAXIMUM_HEADER_LIST_SIZE, @maximum_header_list_size] end if @enable_connect_protocol != other.enable_connect_protocol changes << [ENABLE_CONNECT_PROTOCOL, @enable_connect_protocol] end return changes end |
#enable_connect_protocol? ⇒ Boolean
89 90 91 |
# File 'lib/protocol/http2/settings_frame.rb', line 89 def enable_connect_protocol? @enable_connect_protocol == 1 end |
#enable_push? ⇒ Boolean
45 46 47 |
# File 'lib/protocol/http2/settings_frame.rb', line 45 def enable_push? @enable_push == 1 end |
#update(changes) ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/protocol/http2/settings_frame.rb', line 105 def update(changes) changes.each do |key, value| if name = ASSIGN[key] self.send(name, value) end end end |