diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-11 19:42:53 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-08-11 19:42:53 +0900 |
commit | cc330a0a7010d3ecd6841cc58abb1cd3a2d87132 (patch) | |
tree | db4bba02cd5f9066b6ed8679a015fae36f5fffb6 /lib/plum | |
parent | 61e594d1508716d9351f3dd355edef6e86e980d9 (diff) | |
download | plum-cc330a0a7010d3ecd6841cc58abb1cd3a2d87132.tar.gz |
frame_utils: simplify Frame#parse_settings
Diffstat (limited to 'lib/plum')
-rw-r--r-- | lib/plum/frame_utils.rb | 14 | ||||
-rw-r--r-- | lib/plum/stream_helper.rb | 2 |
2 files changed, 9 insertions, 7 deletions
diff --git a/lib/plum/frame_utils.rb b/lib/plum/frame_utils.rb index c29b4a7..0093f89 100644 --- a/lib/plum/frame_utils.rb +++ b/lib/plum/frame_utils.rb @@ -49,12 +49,14 @@ module Plum # # @return [Hash<Symbol, Integer>] The parsed strings. def parse_settings - (self.length / 6).times.map {|i| - id = self.payload.uint16(6 * i) - val = self.payload.uint32(6 * i + 2) - name = Frame::SETTINGS_TYPE.key(id) or next nil - [name, val] - }.compact.to_h + 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 diff --git a/lib/plum/stream_helper.rb b/lib/plum/stream_helper.rb index 5be440e..4ba7a14 100644 --- a/lib/plum/stream_helper.rb +++ b/lib/plum/stream_helper.rb @@ -33,7 +33,7 @@ module Plum def send_headers(headers, end_stream:) max = @connection.remote_settings[:max_frame_size] encoded = @connection.hpack_encoder.encode(headers) - original_frame = Frame.headers(id, encoded, :end_headers, (end_stream && :end_stream)) + original_frame = Frame.headers(id, encoded, :end_headers, (end_stream && :end_stream || nil)) original_frame.split_headers(max).each do |frame| send frame end |