Class: Baykit::BayServer::Docker::Http::H2::H2CommandUnPacker

Inherits:
Protocol::CommandUnPacker
  • Object
show all
Includes:
Agent, Command
Defined in:
lib/baykit/bayserver/docker/http/h2/h2_command_unpacker.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cmd_handler) ⇒ H2CommandUnPacker

Returns a new instance of H2CommandUnPacker.



18
19
20
# File 'lib/baykit/bayserver/docker/http/h2/h2_command_unpacker.rb', line 18

def initialize(cmd_handler)
  @cmd_handler = cmd_handler
end

Instance Attribute Details

#cmd_handlerObject (readonly)

Returns the value of attribute cmd_handler.



16
17
18
# File 'lib/baykit/bayserver/docker/http/h2/h2_command_unpacker.rb', line 16

def cmd_handler
  @cmd_handler
end

Instance Method Details

#packet_received(pkt) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/baykit/bayserver/docker/http/h2/h2_command_unpacker.rb', line 26

def packet_received(pkt)
  BayLog.debug("h2: read packet type=%d strmid=%d len=%d flgs=%s", pkt.type, pkt.stream_id, pkt.data_len(), pkt.flags)

  case pkt.type
  when H2Type::PREFACE
    cmd = CmdPreface.new(pkt.stream_id, pkt.flags)

  when H2Type::HEADERS
    cmd = CmdHeaders.new(pkt.stream_id, pkt.flags)

  when H2Type::PRIORITY
    cmd = CmdPriority.new(pkt.stream_id, pkt.flags)

  when H2Type::SETTINGS
    cmd = CmdSettings.new(pkt.stream_id, pkt.flags)

  when H2Type::WINDOW_UPDATE
    cmd = CmdWindowUpdate.new(pkt.stream_id, pkt.flags)

  when H2Type::DATA
    cmd = CmdData.new(pkt.stream_id, pkt.flags)

  when H2Type::GOAWAY
    cmd = CmdGoAway.new(pkt.stream_id, pkt.flags)

  when H2Type::PING
    cmd = CmdPing.new(pkt.stream_id, pkt.flags)

  when H2Type::RST_STREAM
    cmd = CmdRstStream.new(pkt.stream_id, pkt.flags)

  else
    reset()
    raise RuntimeError.new("Invalid Packet: #{pkt}")
  end

  cmd.unpack pkt
  return cmd.handle(@cmd_handler)
end

#resetObject



22
23
24
# File 'lib/baykit/bayserver/docker/http/h2/h2_command_unpacker.rb', line 22

def reset

end