aboutsummaryrefslogtreecommitdiffstats
path: root/lib/plum/frame/settings.rb
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2016-05-08 21:58:19 +0900
committerKazuki Yamaguchi <k@rhe.jp>2016-05-08 22:02:50 +0900
commitfed5ea65bc7ac477379e9feda82f0e4d00a00e29 (patch)
tree71de51a144531ddd8b12d8b2b8e3f70c3b264b5d /lib/plum/frame/settings.rb
parent0afb9eadcbb5e631757a777124281f663d8f6974 (diff)
downloadplum-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.rb12
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).