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, 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.
97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/protocol/http2/settings_frame.rb', line 97 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.
83 84 85 |
# File 'lib/protocol/http2/settings_frame.rb', line 83 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.
38 39 40 |
# File 'lib/protocol/http2/settings_frame.rb', line 38 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.
35 36 37 |
# File 'lib/protocol/http2/settings_frame.rb', line 35 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.
56 57 58 |
# File 'lib/protocol/http2/settings_frame.rb', line 56 def initial_window_size @initial_window_size end |
#maximum_concurrent_streams ⇒ Object
Indicates the maximum number of concurrent streams that the sender will allow.
53 54 55 |
# File 'lib/protocol/http2/settings_frame.rb', line 53 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.
68 69 70 |
# File 'lib/protocol/http2/settings_frame.rb', line 68 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.
81 82 83 |
# File 'lib/protocol/http2/settings_frame.rb', line 81 def maximum_header_list_size @maximum_header_list_size end |
Instance Method Details
#difference(other) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/protocol/http2/settings_frame.rb', line 129 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 ? 1 : 0] 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
93 94 95 |
# File 'lib/protocol/http2/settings_frame.rb', line 93 def enable_connect_protocol? @enable_connect_protocol == 1 end |
#enable_push? ⇒ Boolean
48 49 50 |
# File 'lib/protocol/http2/settings_frame.rb', line 48 def enable_push? @enable_push == 1 end |
#update(changes) ⇒ Object
121 122 123 124 125 126 127 |
# File 'lib/protocol/http2/settings_frame.rb', line 121 def update(changes) changes.each do |key, value| if name = ASSIGN[key] self.send(name, value) end end end |