aboutsummaryrefslogtreecommitdiffstats
path: root/lib/plum/frame_utils.rb
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-08-11 19:42:53 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-08-11 19:42:53 +0900
commitcc330a0a7010d3ecd6841cc58abb1cd3a2d87132 (patch)
treedb4bba02cd5f9066b6ed8679a015fae36f5fffb6 /lib/plum/frame_utils.rb
parent61e594d1508716d9351f3dd355edef6e86e980d9 (diff)
downloadplum-cc330a0a7010d3ecd6841cc58abb1cd3a2d87132.tar.gz
frame_utils: simplify Frame#parse_settings
Diffstat (limited to 'lib/plum/frame_utils.rb')
-rw-r--r--lib/plum/frame_utils.rb14
1 files changed, 8 insertions, 6 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