diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2016-05-08 21:58:19 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2016-05-08 22:02:50 +0900 |
commit | fed5ea65bc7ac477379e9feda82f0e4d00a00e29 (patch) | |
tree | 71de51a144531ddd8b12d8b2b8e3f70c3b264b5d /lib/plum/frame/settings.rb | |
parent | 0afb9eadcbb5e631757a777124281f663d8f6974 (diff) | |
download | plum-fed5ea65bc7ac477379e9feda82f0e4d00a00e29.tar.gz |
frame: settings: add Frame::Settings.ack
This is equivalent to Frame::Settings.new(:ack).
Diffstat (limited to 'lib/plum/frame/settings.rb')
-rw-r--r-- | lib/plum/frame/settings.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/plum/frame/settings.rb b/lib/plum/frame/settings.rb index 3bd13d4..7f7c2be 100644 --- a/lib/plum/frame/settings.rb +++ b/lib/plum/frame/settings.rb @@ -15,16 +15,22 @@ module Plum }.freeze # Creates a SETTINGS frame. - # @param ack [Symbol] Pass :ack to create an ACK frame. # @param args [Hash<Symbol, Integer>] The settings values to send. - def initialize(ack = nil, **args) + def initialize(**args) payload = String.new args.each { |key, value| id = SETTINGS_TYPE[key] or raise ArgumentError.new("invalid settings type: #{key}") payload.push_uint16(id) payload.push_uint32(value) } - initialize_base(type: :settings, stream_id: 0, flags: [ack], payload: payload) + initialize_base(type: :settings, stream_id: 0, payload: payload) + end + + # Creates a SETTINGS frame with ACK flag. + def self.ack + frame = allocate + frame.send(:initialize_base, type: :settings, stream_id: 0, flags_value: 0x01) + frame end # Parses SETTINGS frame payload. Ignores unknown settings type (see RFC7540 6.5.2). |