Class: Protocol::HTTP2::Settings

Inherits:
Object
  • Object
show all
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
NO_RFC7540_PRIORITIES =
0x9
ASSIGN =
[
	nil,
	:header_table_size=,
	:enable_push=,
	:maximum_concurrent_streams=,
	:initial_window_size=,
	:maximum_frame_size=,
	:maximum_header_list_size=,
	nil,
	:enable_connect_protocol=,
	:no_rfc7540_priorities=,
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSettings

Returns a new instance of Settings.



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/protocol/http2/settings_frame.rb', line 33

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
	@no_rfc7540_priorities = 0
end

Instance Attribute Details

#enable_connect_protocolObject

Returns the value of attribute enable_connect_protocol.



94
95
96
# File 'lib/protocol/http2/settings_frame.rb', line 94

def enable_connect_protocol
  @enable_connect_protocol
end

#enable_pushObject

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.



50
51
52
# File 'lib/protocol/http2/settings_frame.rb', line 50

def enable_push
  @enable_push
end

#header_table_sizeObject

Allows the sender to inform the remote endpoint of the maximum size of the header compression table used to decode header blocks, in octets.



47
48
49
# File 'lib/protocol/http2/settings_frame.rb', line 47

def header_table_size
  @header_table_size
end

#initial_window_sizeObject

Indicates the sender’s initial window size (in octets) for stream-level flow control.



68
69
70
# File 'lib/protocol/http2/settings_frame.rb', line 68

def initial_window_size
  @initial_window_size
end

#maximum_concurrent_streamsObject

Indicates the maximum number of concurrent streams that the sender will allow.



65
66
67
# File 'lib/protocol/http2/settings_frame.rb', line 65

def maximum_concurrent_streams
  @maximum_concurrent_streams
end

#maximum_frame_sizeObject

Indicates the size of the largest frame payload that the sender is willing to receive, in octets.



79
80
81
# File 'lib/protocol/http2/settings_frame.rb', line 79

def maximum_frame_size
  @maximum_frame_size
end

#maximum_header_list_sizeObject

This advisory setting informs a peer of the maximum size of header list that the sender is prepared to accept, in octets.



92
93
94
# File 'lib/protocol/http2/settings_frame.rb', line 92

def maximum_header_list_size
  @maximum_header_list_size
end

#no_rfc7540_prioritiesObject

Returns the value of attribute no_rfc7540_priorities.



108
109
110
# File 'lib/protocol/http2/settings_frame.rb', line 108

def no_rfc7540_priorities
  @no_rfc7540_priorities
end

Instance Method Details

#enable_connect_protocol?Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/protocol/http2/settings_frame.rb', line 104

def enable_connect_protocol?
	@enable_connect_protocol == 1
end

#enable_push?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/protocol/http2/settings_frame.rb', line 60

def enable_push?
	@enable_push == 1
end

#no_rfc7540_priorities?Boolean

Returns:

  • (Boolean)


118
119
120
# File 'lib/protocol/http2/settings_frame.rb', line 118

def no_rfc7540_priorities?
	@no_rfc7540_priorities == 1
end

#update(changes) ⇒ Object



122
123
124
125
126
127
128
# File 'lib/protocol/http2/settings_frame.rb', line 122

def update(changes)
	changes.each do |key, value|
		if name = ASSIGN[key]
			self.send(name, value)
		end
	end
end