diff options
Diffstat (limited to 'lib/plum/frame/ping.rb')
-rw-r--r-- | lib/plum/frame/ping.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/plum/frame/ping.rb b/lib/plum/frame/ping.rb new file mode 100644 index 0000000..b0b3804 --- /dev/null +++ b/lib/plum/frame/ping.rb @@ -0,0 +1,24 @@ +# frozen-string-literal: true + +using Plum::BinaryString +module Plum + class Frame::Ping < Frame + register_subclass 0x06 + + # Creates a PING frame. + # @overload ping(ack, payload) + # @param ack [Symbol] Pass :ack to create an ACK frame. + # @param payload [String] 8 bytes length data to send. + # @overload ping(payload = "plum\x00\x00\x00\x00") + # @param payload [String] 8 bytes length data to send. + def initialize(arg1 = "plum\x00\x00\x00\x00".b, arg2 = nil) + if !arg2 + raise ArgumentError.new("data must be 8 octets") if arg1.bytesize != 8 + arg1 = arg1.b if arg1.encoding != Encoding::BINARY + initialize_base(type: :ping, stream_id: 0, payload: arg1) + else + initialize_base(type: :ping, stream_id: 0, flags: [:ack], payload: arg2) + end + end + end +end |