func receiveMessage()

in Sources/NIOSSH/Child Channels/SSHChannelMultiplexer.swift [101:150]


    func receiveMessage(_ message: SSHMessage) throws {
        let channel: SSHChildChannel?

        switch message {
        case .channelOpen:
            channel = try self.openNewChannel(initializer: self.childChannelInitializer)

        case .channelOpenConfirmation(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        case .channelOpenFailure(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        case .channelEOF(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        case .channelClose(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)
            if channel == nil, let errorIndex = self.erroredChannels.firstIndex(of: message.recipientChannel) {
                // This is the end of our need to keep track of the channel.
                self.erroredChannels.remove(at: errorIndex)
            }

        case .channelWindowAdjust(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        case .channelData(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        case .channelExtendedData(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        case .channelRequest(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        case .channelSuccess(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        case .channelFailure(let message):
            channel = try self.existingChannel(localID: message.recipientChannel)

        default:
            // Not a channel message, we don't do anything more with this.
            return
        }

        if let channel = channel {
            channel.receiveInboundMessage(message)
        }
    }