FubarDev.FtpServer.FtpConnection.FindCommandHandler C# (CSharp) Method

FindCommandHandler() private method

private FindCommandHandler ( FtpCommand command ) : Tuple
command FtpCommand
return Tuple
        private Tuple<FtpCommand, FtpCommandHandlerBase, bool> FindCommandHandler(FtpCommand command)
        {
            FtpCommandHandler handler;
            if (!CommandHandlers.TryGetValue(command.Name, out handler))
                return null;
            var extensionHost = handler as IFtpCommandHandlerExtensionHost;
            if (!string.IsNullOrWhiteSpace(command.Argument) && extensionHost != null)
            {
                var extensionCommand = FtpCommand.Parse(command.Argument);
                FtpCommandHandlerExtension extension;
                if (extensionHost.Extensions.TryGetValue(extensionCommand.Name, out extension))
                {
                    return Tuple.Create(extensionCommand, (FtpCommandHandlerBase)extension, extension.IsLoginRequired ?? handler.IsLoginRequired);
                }
            }
            return Tuple.Create(command, (FtpCommandHandlerBase)handler, handler.IsLoginRequired);
        }