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)
}
}
}