/// <summary> /// Initialize the factory /// </summary> /// <param name="providerConfig"></param> /// <param name="providerName"></param> /// <param name="log"></param> /// <param name="svcProvider"></param> public void Init(IProviderConfiguration providerConfig, string providerName, Logger log, IServiceProvider svcProvider) { logger = log; serviceProvider = svcProvider; receivers = new ConcurrentDictionary <QueueId, Receiver>(); adapterConfig = new GeneratorAdapterConfig(providerName); adapterConfig.PopulateFromProviderConfig(providerConfig); this.serializationManager = svcProvider.GetRequiredService <SerializationManager>(); if (CacheMonitorFactory == null) { this.CacheMonitorFactory = (dimensions, logger) => new DefaultCacheMonitor(dimensions, logger); } if (this.BlockPoolMonitorFactory == null) { this.BlockPoolMonitorFactory = (dimensions, logger) => new DefaultBlockPoolMonitor(dimensions, logger); } if (this.ReceiverMonitorFactory == null) { this.ReceiverMonitorFactory = (dimensions, logger) => new DefaultQueueAdapterReceiverMonitor(dimensions, logger); } if (adapterConfig.GeneratorConfigType != null) { generatorConfig = (IStreamGeneratorConfig)(serviceProvider?.GetService(adapterConfig.GeneratorConfigType) ?? Activator.CreateInstance(adapterConfig.GeneratorConfigType)); if (generatorConfig == null) { throw new ArgumentOutOfRangeException(nameof(providerConfig), "GeneratorConfigType not valid."); } generatorConfig.PopulateFromProviderConfig(providerConfig); } this.sharedDimensions = new MonitorAggregationDimensions(serviceProvider.GetService <GlobalConfiguration>(), serviceProvider.GetService <NodeConfiguration>()); }
/// <summary> /// Initialize the factory /// </summary> /// <param name="providerConfig"></param> /// <param name="providerName"></param> /// <param name="log"></param> /// <param name="svcProvider"></param> public void Init(IProviderConfiguration providerConfig, string providerName, Logger log, IServiceProvider svcProvider) { logger = log; serviceProvider = svcProvider; receivers = new ConcurrentDictionary <QueueId, Receiver>(); adapterConfig = new GeneratorAdapterConfig(providerName); adapterConfig.PopulateFromProviderConfig(providerConfig); if (adapterConfig.GeneratorConfigType != null) { generatorConfig = (IStreamGeneratorConfig)(serviceProvider?.GetService(adapterConfig.GeneratorConfigType) ?? Activator.CreateInstance(adapterConfig.GeneratorConfigType)); if (generatorConfig == null) { throw new ArgumentOutOfRangeException(nameof(providerConfig), "GeneratorConfigType not valid."); } generatorConfig.PopulateFromProviderConfig(providerConfig); } // 10 meg buffer pool. 10 1 meg blocks bufferPool = new FixedSizeObjectPool <FixedSizeBuffer>(10, () => new FixedSizeBuffer(1 << 20)); }