aboutsummaryrefslogtreecommitdiffstats
path: root/lib/plum/frame_utils.rb
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2016-05-08 22:41:53 +0900
committerKazuki Yamaguchi <k@rhe.jp>2016-05-08 22:41:53 +0900
commitef9daa152ecf2e3f9fe0f2c5eb083379a5077c3b (patch)
treeb9e2afa99c7912ffca4dc0a24c1ccd886348f91b /lib/plum/frame_utils.rb
parent85f218f35d2e9f1332701d908d9570c698708620 (diff)
parent89c73779d0eab2d9aae1e524245beebd589bf15d (diff)
downloadplum-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.rb44
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