module Protocol::HTTP2::Padded
Certain frames can have padding: http2.github.io/http2-spec/#padding
---------------
|Pad Length? (8)| ---------------
———————————————–+ | Data (*) … ---------------------------------------------------------------
| Padding (*) … ---------------------------------------------------------------
Public Instance Methods
pack(data, padding_size: nil, maximum_size: nil)
click to toggle source
Calls superclass method
# File lib/protocol/http2/padded.rb, line 42 def pack(data, padding_size: nil, maximum_size: nil) if padding_size set_flags(PADDED) buffer = String.new.b buffer << padding_size.chr buffer << data if padding_size > 1 buffer << "\0" * (padding_size - 1) end super buffer else clear_flags(PADDED) super data end end
padded?()
click to toggle source
# File lib/protocol/http2/padded.rb, line 38 def padded? flag_set?(PADDED) end
unpack()
click to toggle source
# File lib/protocol/http2/padded.rb, line 63 def unpack if padded? padding_size = @payload[0].ord 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