/// <summary>
 /// Initializes a new instance of the <see cref="FeatCommandHandler"/> class.
 /// </summary>
 /// <param name="featureInfoProvider">Provider for feature information.</param>
 /// <param name="commandHandlerProvider">The FTP command handler provider.</param>
 public FeatCommandHandler(
     IFeatureInfoProvider featureInfoProvider,
     IFtpCommandHandlerProvider commandHandlerProvider)
 {
     _featureInfoProvider    = featureInfoProvider;
     _commandHandlerProvider = commandHandlerProvider;
 }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ServiceFtpCommandHandlerExtensionScanner"/> class.
 /// </summary>
 /// <param name="commandHandlerProvider">The FTP command handler provider.</param>
 /// <param name="commandHandlerExtensions">The FTP command handler extensions.</param>
 /// <param name="logger">The logger.</param>
 public ServiceFtpCommandHandlerExtensionScanner(
     [NotNull] IFtpCommandHandlerProvider commandHandlerProvider,
     [NotNull, ItemNotNull] IEnumerable <IFtpCommandHandlerExtension> commandHandlerExtensions,
     [CanBeNull] ILogger <ServiceFtpCommandHandlerScanner> logger = null)
 {
     _extensionInformation = CreateInformation(commandHandlerProvider, commandHandlerExtensions, logger).ToList();
 }
        private static IEnumerable <IFtpCommandHandlerExtensionInstanceInformation> CreateInformation(
            IFtpCommandHandlerProvider commandHandlerProvider,
            IEnumerable <IFtpCommandHandlerExtension> commandHandlerExtensions,
            ILogger?logger = null)
        {
            var cmdHandlers           = commandHandlerProvider.CommandHandlers.ToList();
            var commandHandlers       = cmdHandlers.ToDictionary(x => x.Name, StringComparer.OrdinalIgnoreCase);
            var commandHandlersByType = cmdHandlers.ToLookup(x => x.Type);

            foreach (var handlerExtension in commandHandlerExtensions)
            {
                if (!commandHandlers.TryGetValue(handlerExtension.ExtensionFor, out var commandHandlerInformation))
                {
                    logger?.LogWarning("No command handler found for ID {commandId}.", handlerExtension.ExtensionFor);
                    continue;
                }

                var matchingCommandHandlers = commandHandlersByType[commandHandlerInformation.Type];
                foreach (var matchingCommandHandler in matchingCommandHandlers)
                {
                    foreach (var extensionInformation in handlerExtension.GetInformation(matchingCommandHandler))
                    {
                        yield return(extensionInformation);
                    }
                }
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FeatCommandHandler"/> class.
 /// </summary>
 /// <param name="featureInfoProvider">Provider for feature information.</param>
 /// <param name="commandHandlerProvider">The FTP command handler provider.</param>
 public FeatCommandHandler(
     [NotNull] IFeatureInfoProvider featureInfoProvider,
     [NotNull] IFtpCommandHandlerProvider commandHandlerProvider)
 {
     _featureInfoProvider    = featureInfoProvider;
     _commandHandlerProvider = commandHandlerProvider;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultFeatureInfoProvider"/> class.
 /// </summary>
 /// <param name="commandHandlerProvider">Provider for the FTP command handlers.</param>
 /// <param name="extensionProvider">Provider for the FTP command handler extensions.</param>
 /// <param name="hostSelector">The FTP host selector.</param>
 public DefaultFeatureInfoProvider(
     IFtpCommandHandlerProvider commandHandlerProvider,
     IFtpCommandHandlerExtensionProvider extensionProvider,
     IFtpHostSelector hostSelector)
 {
     _commandHandlerProvider = commandHandlerProvider;
     _extensionProvider      = extensionProvider;
     _hostSelector           = hostSelector;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="AssemblyFtpCommandHandlerExtensionScanner"/> class.
        /// </summary>
        /// <param name="commandHandlerProvider">The provider for the FTP commands.</param>
        /// <param name="logger">The logger.</param>
        /// <param name="assemblies">The assemblies to scan for FTP command handlers.</param>
        public AssemblyFtpCommandHandlerExtensionScanner(
            [NotNull] IFtpCommandHandlerProvider commandHandlerProvider,
            [CanBeNull] ILogger <AssemblyFtpCommandHandlerExtensionScanner> logger = null,
            [NotNull, ItemNotNull] params Assembly[] assemblies)
        {
            var cmdHandlers = commandHandlerProvider.CommandHandlers.ToList();

            _commandHandlers       = cmdHandlers.ToDictionary(x => x.Name, StringComparer.OrdinalIgnoreCase);
            _commandHandlersByType = cmdHandlers.ToLookup(x => x.Type);
            _logger     = logger;
            _assemblies = assemblies;
        }
Exemplo n.º 7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultFtpCommandActivator"/> class.
 /// </summary>
 /// <param name="serviceProvider">The service provider.</param>
 /// <param name="commandHandlerProvider">The provider for FTP command handlers.</param>
 /// <param name="commandHandlerExtensionProvider">The provider for FTP command handler extensions.</param>
 public DefaultFtpCommandActivator(
     IServiceProvider serviceProvider,
     IFtpCommandHandlerProvider commandHandlerProvider,
     IFtpCommandHandlerExtensionProvider commandHandlerExtensionProvider)
 {
     _serviceProvider   = serviceProvider;
     _nameToHandlerInfo = commandHandlerProvider.CommandHandlers.ToDictionary(
         x => x.Name,
         StringComparer.OrdinalIgnoreCase);
     _hostToExtensionInfo = commandHandlerExtensionProvider.CommandHandlerExtensions.ToLookup(
         x => x.ExtensionOf.Name,
         StringComparer.OrdinalIgnoreCase);
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ServiceFtpCommandHandlerExtensionScanner"/> class.
        /// </summary>
        /// <param name="commandHandlerProvider">The FTP command handler provider.</param>
        /// <param name="commandHandlerExtensions">The FTP command handler extensions.</param>
        /// <param name="logger">The logger.</param>
        public ServiceFtpCommandHandlerExtensionScanner(
            IFtpCommandHandlerProvider commandHandlerProvider,
            IEnumerable <IFtpCommandHandlerExtension> commandHandlerExtensions,
            ILogger <ServiceFtpCommandHandlerScanner>?logger = null)
        {
            _extensionInformation = CreateInformation(commandHandlerProvider, commandHandlerExtensions, logger).ToList();

            // Write warning about obsolete functionality.
            foreach (var information in _extensionInformation)
            {
                var message =
                    $"The command handler extension of type {information.Instance.GetType()}" +
                    $" for {information.Name} was registered via dependency injection." +
                    " This will not be supported in version 4.0 and is currently obsoleted." +
                    " Please create and register your own implementation of IFtpCommandHandlerExtensionScanner or" +
                    " use the AssemblyFtpCommandHandlerExtensionScanner.";
                logger?.LogWarning(message);
                Debug.WriteLine($"WARNING: {message}");
            }
        }