def types
@types ||= case @type
when KEXINIT then
[:long, :long, :long, :long,
:string, :string, :string, :string, :string, :string, :string, :string, :string, :string,
:bool]
when NEWKEYS then []
when CHANNEL_OPEN then [:string, :long, :long, :long]
when CHANNEL_OPEN_CONFIRMATION then [:long, :long, :long, :long]
when CHANNEL_DATA then [:long, :string]
when CHANNEL_EOF, CHANNEL_CLOSE, CHANNEL_SUCCESS, CHANNEL_FAILURE then [:long]
when CHANNEL_REQUEST
parts = [:long, :string, :bool]
case @data[1]
when "exec", "subsystem" then parts << :string
when "exit-status" then parts << :long
else raise "don't know what to do about #{@data[1]} channel request"
end
else raise "don't know how to parse packet type #{@type}"
end
end