mutating func readSSHMessage()

in Sources/NIOSSH/SSHMessages.swift [368:515]


    mutating func readSSHMessage() throws -> SSHMessage? {
        try self.rewindOnNilOrError { `self` in
            guard let type = self.readInteger(as: UInt8.self) else {
                return nil
            }

            switch type {
            case SSHMessage.DisconnectMessage.id:
                guard let message = self.readDisconnectMessage() else {
                    return nil
                }
                return .disconnect(message)
            case SSHMessage.IgnoreMessage.id:
                guard let message = self.readIgnoreMessage() else {
                    return nil
                }
                return .ignore(message)
            case SSHMessage.UnimplementedMessage.id:
                guard let message = self.readUnimplementedMessage() else {
                    return nil
                }
                return .unimplemented(message)
            case SSHMessage.DebugMessage.id:
                guard let message = self.readDebugMessage() else {
                    return nil
                }
                return .debug(message)
            case SSHMessage.ServiceRequestMessage.id:
                guard let message = self.readServiceRequestMessage() else {
                    return nil
                }
                return .serviceRequest(message)
            case SSHMessage.ServiceAcceptMessage.id:
                guard let message = self.readServiceAcceptMessage() else {
                    return nil
                }
                return .serviceAccept(message)
            case SSHMessage.KeyExchangeMessage.id:
                guard let message = self.readKeyExchangeMessage() else {
                    return nil
                }
                return .keyExchange(message)
            case SSHMessage.KeyExchangeECDHInitMessage.id:
                guard let message = self.readKeyExchangeECDHInitMessage() else {
                    return nil
                }
                return .keyExchangeInit(message)
            case SSHMessage.KeyExchangeECDHReplyMessage.id:
                guard let message = try self.readKeyExchangeECDHReplyMessage() else {
                    return nil
                }
                return .keyExchangeReply(message)
            case SSHMessage.NewKeysMessage.id:
                return .newKeys
            case SSHMessage.UserAuthRequestMessage.id:
                guard let message = try self.readUserAuthRequestMessage() else {
                    return nil
                }
                return .userAuthRequest(message)
            case SSHMessage.UserAuthFailureMessage.id:
                guard let message = self.readUserAuthFailureMessage() else {
                    return nil
                }
                return .userAuthFailure(message)
            case SSHMessage.UserAuthSuccessMessage.id:
                return .userAuthSuccess
            case SSHMessage.UserAuthBannerMessage.id:
                guard let message = self.readUserAuthBannerMessage() else {
                    return nil
                }
                return .userAuthBanner(message)
            case SSHMessage.UserAuthPKOKMessage.id:
                guard let message = try self.readUserAuthPKOKMessage() else {
                    return nil
                }
                return .userAuthPKOK(message)
            case SSHMessage.GlobalRequestMessage.id:
                guard let message = try self.readGlobalRequestMessage() else {
                    return nil
                }
                return .globalRequest(message)
            case SSHMessage.RequestSuccessMessage.id:
                guard let message = self.readRequestSuccessMessage() else {
                    return nil
                }
                return .requestSuccess(message)
            case SSHMessage.RequestFailureMessage.id:
                return .requestFailure
            case SSHMessage.ChannelOpenMessage.id:
                guard let message = try self.readChannelOpenMessage() else {
                    return nil
                }
                return .channelOpen(message)
            case SSHMessage.ChannelOpenConfirmationMessage.id:
                guard let message = self.readChannelOpenConfirmationMessage() else {
                    return nil
                }
                return .channelOpenConfirmation(message)
            case SSHMessage.ChannelOpenFailureMessage.id:
                guard let message = self.readChannelOpenFailureMessage() else {
                    return nil
                }
                return .channelOpenFailure(message)
            case SSHMessage.ChannelWindowAdjustMessage.id:
                guard let message = self.readChannelWindowAdjustMessage() else {
                    return nil
                }
                return .channelWindowAdjust(message)
            case SSHMessage.ChannelDataMessage.id:
                guard let message = self.readChannelDataMessage() else {
                    return nil
                }
                return .channelData(message)
            case SSHMessage.ChannelExtendedDataMessage.id:
                guard let message = self.readChannelExtendedDataMessage() else {
                    return nil
                }
                return .channelExtendedData(message)
            case SSHMessage.ChannelEOFMessage.id:
                guard let message = self.readChannelEOFMessage() else {
                    return nil
                }
                return .channelEOF(message)
            case SSHMessage.ChannelCloseMessage.id:
                guard let message = self.readChannelCloseMessage() else {
                    return nil
                }
                return .channelClose(message)
            case SSHMessage.ChannelRequestMessage.id:
                guard let message = try self.readChannelRequestMessage() else {
                    return nil
                }
                return .channelRequest(message)
            case SSHMessage.ChannelSuccessMessage.id:
                guard let message = self.readChannelSuccessMessage() else {
                    return nil
                }
                return .channelSuccess(message)
            case SSHMessage.ChannelFailureMessage.id:
                guard let message = self.readChannelFailureMessage() else {
                    return nil
                }
                return .channelFailure(message)
            default:
                throw SSHMessage.ParsingError.unknownType(type)
            }
        }
    }