diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2016-05-08 22:41:53 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2016-05-08 22:41:53 +0900 |
commit | ef9daa152ecf2e3f9fe0f2c5eb083379a5077c3b (patch) | |
tree | b9e2afa99c7912ffca4dc0a24c1ccd886348f91b /lib/plum/frame_utils.rb | |
parent | 85f218f35d2e9f1332701d908d9570c698708620 (diff) | |
parent | 89c73779d0eab2d9aae1e524245beebd589bf15d (diff) | |
download | plum-ef9daa152ecf2e3f9fe0f2c5eb083379a5077c3b.tar.gz |
Merge branch 'topic/refactor-for-0.3'
* topic/refactor-for-0.3:
examples: static_server: use test certificate in test/
style: prefer "".b over String.new
frame: settings: add Frame::Settings.ack
avoid Frame#type if possible
client: decoders: unfreeze Client::Decoders::DECODERS
frame: create subclasses for each frame type
merge *_{utils,factory}
Diffstat (limited to 'lib/plum/frame_utils.rb')
-rw-r--r-- | lib/plum/frame_utils.rb | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/lib/plum/frame_utils.rb b/lib/plum/frame_utils.rb deleted file mode 100644 index cbb16fa..0000000 --- a/lib/plum/frame_utils.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen-string-literal: true - -using Plum::BinaryString - -module Plum - module FrameUtils - # Splits this frame into multiple frames not to exceed MAX_FRAME_SIZE. - # @param max [Integer] The maximum size of a frame payload. - # @yield [Frame] The splitted frames. - def split(max) - return yield self if @length <= max - first, *mid, last = @payload.chunk(max) - case type - when :data - yield Frame.new(type_value: 0, stream_id: @stream_id, payload: first, flags_value: @flags_value & ~1) - mid.each { |slice| - yield Frame.new(type_value: 0, stream_id: @stream_id, payload: slice, flags_value: 0) - } - yield Frame.new(type_value: 0, stream_id: @stream_id, payload: last, flags_value: @flags_value & 1) - when :headers, :push_promise - yield Frame.new(type_value: @type_value, stream_id: @stream_id, payload: first, flags_value: @flags_value & ~4) - mid.each { |slice| - yield Frame.new(type: :continuation, stream_id: @stream_id, payload: slice, flags_value: 0) - } - yield Frame.new(type: :continuation, stream_id: @stream_id, payload: last, flags_value: @flags_value & 4) - else - raise NotImplementedError.new("frame split of frame with type #{type} is not supported") - end - end - - # Parses SETTINGS frame payload. Ignores unknown settings type (see RFC7540 6.5.2). - # @return [Hash<Symbol, Integer>] The parsed strings. - def parse_settings - settings = {} - payload.each_byteslice(6) do |param| - id = param.uint16 - name = Frame::SETTINGS_TYPE.key(id) - # ignore unknown settings type - settings[name] = param.uint32(2) if name - end - settings - end - end -end |