public StatisticsProviderManager(IProviderRuntime runtime, LoadedProviderTypeLoaders loadedProviderTypeLoaders, ILoggerFactory loggerFactory)
 {
     providerKind             = ProviderCategoryConfiguration.STATISTICS_PROVIDER_CATEGORY_NAME;
     this.runtime             = runtime;
     this.loggerFactory       = loggerFactory;
     statisticsProviderLoader = new ProviderLoader <IProvider>(loadedProviderTypeLoaders, loggerFactory);
 }
Example #2
0
 public ProviderLoader(LoadedProviderTypeLoaders loadedProviderTypeLoaders, ILoggerFactory loggerFactory)
 {
     logger                         = loggerFactory.CreateLogger <ProviderLoader <TProvider> >();
     this.loggerFactory             = loggerFactory;
     providers                      = new Dictionary <string, TProvider>();
     this.loadedProviderTypeLoaders = loadedProviderTypeLoaders;
 }
Example #3
0
        public ProviderTypeLookup(ILoggerFactory loggerFactory)
        {
            this.lookup = new Dictionary <string, Type>();
            var logger = loggerFactory.CreateLogger <LoadedProviderTypeLoaders>();
            var loader = new LoadedProviderTypeLoaders(logger);

            ProviderTypeLoader.AddProviderTypeManager(t => typeof(IProvider).IsAssignableFrom(t), RegisterProviderType, loader, loggerFactory);
        }
Example #4
0
 private void ProcessLoadedAssemblies(LoadedProviderTypeLoaders loadedProviderTypeLoadersSingleton)
 {
     // Walk through already-loaded assemblies.
     // We do this under the lock to avoid race conditions when an assembly is added
     // while a type manager is initializing.
     foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
     {
         ProcessAssemblyLocally(assembly);
     }
 }
Example #5
0
 public ProviderLoader(LoadedProviderTypeLoaders loadedProviderTypeLoaders)
 {
     logger    = LogManager.GetLogger("ProviderLoader/" + typeof(TProvider).Name, LoggerType.Runtime);
     providers = new Dictionary <string, TProvider>();
     this.loadedProviderTypeLoaders = loadedProviderTypeLoaders;
 }
Example #6
0
        public static void AddProviderTypeManager(Func <Type, bool> condition, Action <Type> action, LoadedProviderTypeLoaders loadedProviderTypeLoadersSingleton)
        {
            var manager = new ProviderTypeLoader(condition, action);

            lock (loadedProviderTypeLoadersSingleton.Managers)
            {
                loadedProviderTypeLoadersSingleton.Managers.Add(manager);
            }

            manager.ProcessLoadedAssemblies(loadedProviderTypeLoadersSingleton);
        }