Sha256: cc7b090d92b72c165567c6bdd5111eeeb5336cce0a7bfd4c3de49bf98b0d3a3d
Contents?: true
Size: 1.51 KB
Versions: 5
Compression:
Stored size: 1.51 KB
Contents
# frozen_string_literal: true # Released under the MIT License. # Copyright, 2019-2023, by Samuel Williams. require_relative 'frame' require_relative 'padded' require_relative 'continuation_frame' module Protocol module HTTP2 # The PUSH_PROMISE frame is used to notify the peer endpoint in advance of streams the sender intends to initiate. The PUSH_PROMISE frame includes the unsigned 31-bit identifier of the stream the endpoint plans to create along with a set of headers that provide additional context for the stream. # # +---------------+ # |Pad Length? (8)| # +-+-------------+-----------------------------------------------+ # |R| Promised Stream ID (31) | # +-+-----------------------------+-------------------------------+ # | Header Block Fragment (*) ... # +---------------------------------------------------------------+ # | Padding (*) ... # +---------------------------------------------------------------+ # class PushPromiseFrame < Frame include Continued, Padded TYPE = 0x5 FORMAT = "N".freeze def unpack data = super stream_id = data.unpack1(FORMAT) return stream_id, data.byteslice(4, data.bytesize - 4) end def pack(stream_id, data, *arguments, **options) super([stream_id].pack(FORMAT) + data, *arguments, **options) end def apply(connection) connection.receive_push_promise(self) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems