58: def types
59: @types ||= case @type
60: when KEXINIT then
61: [:long, :long, :long, :long,
62: :string, :string, :string, :string, :string, :string, :string, :string, :string, :string,
63: :bool]
64: when NEWKEYS then []
65: when CHANNEL_OPEN then [:string, :long, :long, :long]
66: when CHANNEL_OPEN_CONFIRMATION then [:long, :long, :long, :long]
67: when CHANNEL_DATA then [:long, :string]
68: when CHANNEL_EOF, CHANNEL_CLOSE, CHANNEL_SUCCESS, CHANNEL_FAILURE then [:long]
69: when CHANNEL_REQUEST
70: parts = [:long, :string, :bool]
71: case @data[1]
72: when "exec", "subsystem" then parts << :string
73: when "exit-status" then parts << :long
74: else raise "don't know what to do about #{@data[1]} channel request"
75: end
76: else raise "don't know how to parse packet type #{@type}"
77: end
78: end