private IPipeFitter GetExitPipeFitter(IDiContainerAdapter serviceProvider) => serviceProvider.GetService <IPipeFitter>( Configuration.ExitPipeFitterType, exception => new PoezdConfigurationException( $"Can not get instance of the message broker egress exit pipe fitter of type '{Configuration.ExitPipeFitterType.FullName}'. " + "You should register this type in DI-container.", exception));
private IIngressApiMessageTypesRegistry GetMessageTypesRegistry(IDiContainerAdapter serviceProvider) => serviceProvider.GetService <IIngressApiMessageTypesRegistry>( Configuration.MessageTypesRegistryType, exception => new PoezdConfigurationException( $"Can not get an instance of message types registry of type '{Configuration.MessageTypesRegistryType}'. " + "You should register this type in DI-container.", exception));
private IHandlerRegistry GetHandlerRegistry(IDiContainerAdapter serviceProvider) => serviceProvider.GetService <IHandlerRegistry>( Configuration.HandlerRegistryType, exception => new PoezdConfigurationException( $"Can not get an instance of handler registry of type '{Configuration.HandlerRegistryType}'. " + "You should register this type in DI-container.", exception));
public void Initialize( IBrokerIngress brokerIngress, IEnumerable <IIngressApi> apis, IDiContainerAdapter serviceProvider) { _state.InitializedCount++; }
private IPipeFitter GetIngressPipeFitter(IDiContainerAdapter serviceProvider) => serviceProvider.GetService <IPipeFitter>( Configuration.PipeFitterType, exception => new PoezdConfigurationException( $"Can not get an instance of ingress API pipe fitter of type '{Configuration.PipeFitterType.FullName}'." + "You should register this type in DI-container.", exception));
private IQueueNamePatternsProvider GetQueueNamePatternsProvider(IDiContainerAdapter serviceProvider) => serviceProvider.GetService <IQueueNamePatternsProvider>( Configuration.QueueNamePatternsProviderType, exception => new PoezdConfigurationException( $"Can not get an instance of queue name patterns provider of type '{Configuration.QueueNamePatternsProviderType}'. " + "You should register this type in DI-container.", exception));
/// <summary> /// Constructs a new instance of message router. /// </summary> /// <param name="configuration"> /// The message router configuration. /// </param> /// <param name="diContainerAdapter"> /// DI-container adapter. /// </param> /// <exception cref="ArgumentNullException"> /// One of arguments is not specified. /// </exception> internal MessageRouter( [NotNull] MessageRouterConfiguration configuration, [NotNull] IDiContainerAdapter diContainerAdapter) { _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); _diContainerAdapter = diContainerAdapter ?? throw new ArgumentNullException(nameof(diContainerAdapter)); _currentState = new NotStartedState(this); }
/// <summary> /// Constructs a new instance of message broker egress. /// </summary> /// <param name="configuration"> /// The message broker egress configuration. /// </param> /// <param name="serviceProvider"> /// Service provider. /// </param> public BrokerEgress( [NotNull] BrokerEgressConfiguration configuration, [NotNull] IDiContainerAdapter serviceProvider) { Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); Driver = configuration.Driver ?? throw new ArgumentNullException($"{nameof(configuration)}.{nameof(configuration.Driver)}"); Apis = configuration.Apis.Select(api => new EgressApi(api, serviceProvider)).Cast <IEgressApi>().ToList().AsReadOnly(); EnterPipeFitter = GetEnterPipeFitter(serviceProvider); ExitPipeFitter = GetExitPipeFitter(serviceProvider); }
/// <summary> /// Constructs a new instance of egress API. /// </summary> /// <param name="configuration"> /// The egress API configuration. /// </param> /// <param name="serviceProvider"> /// Service provider. /// </param> /// <exception cref="ArgumentNullException"> /// On of arguments is not specified. /// </exception> public EgressApi(EgressApiConfiguration configuration, IDiContainerAdapter serviceProvider) { Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } MessageTypesRegistry = GetMessageTypesRegistry(serviceProvider); PipeFitter = GetPipeFitter(serviceProvider); }
/// <summary> /// Constructs a new instance of ingress API. /// </summary> /// <param name="configuration"> /// The ingress API configuration. /// </param> /// <param name="serviceProvider"> /// Service provider. /// </param> /// <exception cref="ArgumentNullException"> /// One of arguments is not specified. /// </exception> public IngressApi([NotNull] IngressApiConfiguration configuration, [NotNull] IDiContainerAdapter serviceProvider) { Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } _queueNamePatternsProvider = GetQueueNamePatternsProvider(serviceProvider); MessageTypesRegistry = GetMessageTypesRegistry(serviceProvider); HandlerRegistry = GetHandlerRegistry(serviceProvider); PipeFitter = GetIngressPipeFitter(serviceProvider); }
/// <summary> /// Construct a new instance of message broker. /// </summary> /// <param name="messageBroker"> /// The message broker this ingress belongs to. /// </param> /// <param name="configuration"> /// The message broker configuration. /// </param> /// <param name="serviceProvider"> /// Service provider. /// </param> /// <exception cref="ArgumentNullException"> /// One of arguments is not specified. /// </exception> /// <exception cref="PoezdConfigurationException"> /// Can not get a required service from <paramref name="serviceProvider" />. /// </exception> public BrokerIngress( [NotNull] IMessageBroker messageBroker, [NotNull] BrokerIngressConfiguration configuration, [NotNull] IDiContainerAdapter serviceProvider) { _messageBroker = messageBroker ?? throw new ArgumentNullException(nameof(messageBroker)); Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); Driver = configuration.Driver ?? throw new ArgumentNullException($"{nameof(configuration)}.{nameof(configuration.Driver)}"); Apis = configuration.Apis.Select(api => new IngressApi(api, serviceProvider)).ToList().AsReadOnly(); _queueNameMatcher = (IQueueNameMatcher)serviceProvider.GetService(configuration.QueueNameMatcherType); EnterPipeFitter = GetEnterPipeFitter(); ExitPipeFitter = GetExitPipeFitter(); }
/// <inheritdoc /> public void Initialize(IEnumerable <IEgressApi> apis, IDiContainerAdapter serviceProvider) { if (_isInitialized) { throw new PoezdOperationException( $"Kafka driver for broker with bootstrap servers{_driverConfiguration.ProducerConfig.BootstrapServers} is already initialized."); } _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); _apis = apis ?? throw new ArgumentNullException(nameof(apis)); GetRequiredServices(); CreateAndRegisterProducerPerApi(); _isInitialized = true; }
/// <inheritdoc /> public void Initialize( IBrokerIngress brokerIngress, IEnumerable <IIngressApi> apis, IDiContainerAdapter serviceProvider) { if (_isInitialized) { throw new PoezdOperationException("Kafka ingress driver is already initialized."); } _brokerIngress = brokerIngress ?? throw new ArgumentNullException(nameof(brokerIngress)); _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); _apis = apis ?? throw new ArgumentNullException(nameof(apis)); GetRequiredServices(); CreateAndRegisterConsumerPerApi(); _isInitialized = true; }
public CdcNotificationsPipeFitter([NotNull] IDiContainerAdapter serviceProvider) : base(serviceProvider) { }
public TestBrokerEgressExitPipeFitter([NotNull] IDiContainerAdapter serviceProvider) : base(serviceProvider) { }
/// <summary> /// Creates a message router with configuration and DI-container adapter specified. /// </summary> /// <param name="configuration"> /// Message router configuration. /// </param> /// <param name="diContainerAdapter"> /// DI-container adapter. /// </param> /// <returns> /// Configured message router. /// </returns> /// <exception cref="System.ArgumentNullException"> /// DI-container adapter is not specified. /// </exception> public static IMessageRouter CreateMessageRouter( this MessageRouterConfiguration configuration, IDiContainerAdapter diContainerAdapter) => new MessageRouter(configuration, diContainerAdapter);
public static TResult GetService <TResult>(this IDiContainerAdapter serviceProvider, [NotNull] Type serviceType) => (TResult)serviceProvider.GetService(serviceType ?? throw new ArgumentNullException(nameof(serviceProvider)));
public FinishTestPipeFitter([NotNull] IDiContainerAdapter serviceProvider) : base(serviceProvider) { }
public Service2PipeFitter([NotNull] IDiContainerAdapter serviceProvider) : base(serviceProvider) { }
public WithThrowingHandlerPipeFitter([NotNull] IDiContainerAdapter serviceProvider) : base(serviceProvider) { }
public FindMessageHandlersStep([NotNull] IDiContainerAdapter serviceProvider) { _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); }
public VentureIngressPipeFitter([NotNull] IDiContainerAdapter serviceProvider) : base(serviceProvider) { }
public SampleBrokerPipeFitter([NotNull] IDiContainerAdapter serviceProvider) : base(serviceProvider) { }
/// <summary> /// Constructs an instance of pipe fitter. /// </summary> /// <param name="serviceProvider"> /// Service provider used for constructing steps instances. /// </param> /// <exception cref="ArgumentNullException"> /// Service provider is not specified. /// </exception> protected TypeBasedPipeFitter([NotNull] IDiContainerAdapter serviceProvider) { _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); }