class Settings
	
	
	HTTP/2 connection settings container and management.
Definitions
def initialize
Initialize settings with default values from HTTP/2 specification.
Implementation
						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
					attr_accessor :header_table_size
Allows the sender to inform the remote endpoint of the maximum size of the header compression table used to decode header blocks, in octets.
attr :enable_push
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.
def enable_push=(value)
Set the server push enable flag.
Signature
	- 
					parameter 
valueInteger Must be 0 (disabled) or 1 (enabled).
- 
					raises 
ProtocolError If the value is invalid.
Implementation
						def enable_push= value
	if value == 0 or value == 1
		@enable_push = value
	else
		raise ProtocolError, "Invalid value for enable_push: #{value}"
	end
end
					def enable_push?
Check if server push is enabled.
Signature
	- 
					returns 
Boolean True if server push is enabled.
Implementation
						def enable_push?
	@enable_push == 1
end
					attr_accessor :maximum_concurrent_streams
Indicates the maximum number of concurrent streams that the sender will allow.
attr :initial_window_size
Indicates the sender's initial window size (in octets) for stream-level flow control.
def initial_window_size=(value)
Set the initial window size for stream-level flow control.
Signature
	- 
					parameter 
valueInteger The window size in octets.
- 
					raises 
ProtocolError If the value exceeds the maximum allowed.
Implementation
						def initial_window_size= value
	if value <= MAXIMUM_ALLOWED_WINDOW_SIZE
		@initial_window_size = value
	else
		raise ProtocolError, "Invalid value for initial_window_size: #{value} > #{MAXIMUM_ALLOWED_WINDOW_SIZE}"
	end
end
					attr :maximum_frame_size
Indicates the size of the largest frame payload that the sender is willing to receive, in octets.
def maximum_frame_size=(value)
Set the maximum frame size the sender is willing to receive.
Signature
	- 
					parameter 
valueInteger The maximum frame size in octets.
- 
					raises 
ProtocolError If the value is outside the allowed range.
Implementation
						def maximum_frame_size= value
	if value > MAXIMUM_ALLOWED_FRAME_SIZE
		raise ProtocolError, "Invalid value for maximum_frame_size: #{value} > #{MAXIMUM_ALLOWED_FRAME_SIZE}"
	elsif value < MINIMUM_ALLOWED_FRAME_SIZE
		raise ProtocolError, "Invalid value for maximum_frame_size: #{value} < #{MINIMUM_ALLOWED_FRAME_SIZE}"
	else
		@maximum_frame_size = value
	end
end
					attr_accessor :maximum_header_list_size
This advisory setting informs a peer of the maximum size of header list that the sender is prepared to accept, in octets.
def enable_connect_protocol=(value)
Set the CONNECT protocol enable flag.
Signature
	- 
					parameter 
valueInteger Must be 0 (disabled) or 1 (enabled).
- 
					raises 
ProtocolError If the value is invalid.
Implementation
						def enable_connect_protocol= value
	if value == 0 or value == 1
		@enable_connect_protocol = value
	else
		raise ProtocolError, "Invalid value for enable_connect_protocol: #{value}"
	end
end
					def enable_connect_protocol?
Check if CONNECT protocol is enabled.
Signature
	- 
					returns 
Boolean True if CONNECT protocol is enabled.
Implementation
						def enable_connect_protocol?
	@enable_connect_protocol == 1
end
					def no_rfc7540_priorities=(value)
Set the RFC 7540 priorities disable flag.
Signature
	- 
					parameter 
valueInteger Must be 0 (enabled) or 1 (disabled).
- 
					raises 
ProtocolError If the value is invalid.
Implementation
						def no_rfc7540_priorities= value
	if value == 0 or value == 1
		@no_rfc7540_priorities = value
	else
		raise ProtocolError, "Invalid value for no_rfc7540_priorities: #{value}"
	end
end
					def no_rfc7540_priorities?
Check if RFC 7540 priorities are disabled.
Signature
	- 
					returns 
Boolean True if RFC 7540 priorities are disabled.
Implementation
						def no_rfc7540_priorities?
	@no_rfc7540_priorities == 1
end
					def update(changes)
Update settings with a hash of changes.
Signature
	- 
					parameter 
changesHash Hash of setting keys and values to update.
Implementation
						def update(changes)
	changes.each do |key, value|
		if name = ASSIGN[key]
			self.send(name, value)
		end
	end
end