module Protocol::HTTP2::Padded

def pack(data, padding_size: nil, maximum_size: nil)

def pack(data, padding_size: nil, maximum_size: nil)
	if padding_size
		set_flags(PADDED)
		
		buffer = String.new.b
		
		buffer << padding_size
		buffer << data
		
		if padding_size
			buffer << ("\0" * padding_size)
		end
		
		super buffer
	else
		clear_flags(PADDED)
		
		super data
	end
end

def padded?

def padded?
	flag_set?(PADDED)
end

def unpack

def unpack
	if padded?
		padding_size = @payload[0].ord
		
		# 1 byte for the padding octet, and padding_size bytes for the padding itself:
		data_size = @payload.bytesize - (1 + padding_size)
		
		if data_size < 0
			raise ProtocolError, "Invalid padding length: #{padding_size}"
		end
		
		return @payload.byteslice(1, data_size)
	else
		return @payload
	end
end