Exemple #1
0
 public AzureStorageAuditQueueProcessorFactory(IAsynchronousBackoffPolicyFactory backoffPolicyFactory,
                                               IAzureStorageQueueSerializer serializer,
                                               ICommandAuditPipeline commandAuditPipeline,
                                               ICloudAuditQueueProvider cloudAuditQueueProvider)
 {
     _backoffPolicyFactory    = backoffPolicyFactory;
     _serializer              = serializer;
     _commandAuditPipeline    = commandAuditPipeline;
     _cloudAuditQueueProvider = cloudAuditQueueProvider;
 }
 public CommandDispatcher(ICommandRegistry commandRegistry,
                          ICommandExecuter commandExecuter,
                          ICommandScopeManager commandScopeManager,
                          ICommandAuditPipeline auditPipeline,
                          IOptionsProvider optionsProvider)
 {
     _commandRegistry     = commandRegistry;
     _commandScopeManager = commandScopeManager;
     _auditor             = auditPipeline;
     AssociatedExecuter   = commandExecuter;
     _collectMetrics      = optionsProvider.Options.MetricCollectionEnabled;
 }
 public CommandExecuter(ICommandRegistry commandRegistry,
                        ICommandHandlerFactory commandHandlerFactory,
                        ICommandScopeManager commandScopeManager,
                        ICommandHandlerExecuter commandHandlerExecuter,
                        IPipelineAwareCommandHandlerExecuter pipelineAwareCommandHandlerExecuter,
                        ICommandExecutionExceptionHandler commandExecutionExceptionHandler,
                        ICommandAuditPipeline commandAuditPipeline,
                        IOptionsProvider optionsProvider)
 {
     _commandRegistry        = commandRegistry;
     _commandHandlerFactory  = commandHandlerFactory;
     _commandScopeManager    = commandScopeManager;
     _commandHandlerExecuter = commandHandlerExecuter;
     _pipelineAwareCommandHandlerExecuter = pipelineAwareCommandHandlerExecuter;
     _commandExecutionExceptionHandler    = commandExecutionExceptionHandler;
     _commandAuditPipeline = commandAuditPipeline;
     _collectMetrics       = optionsProvider.Options.MetricCollectionEnabled;
 }
Exemple #4
0
        public ICommandRegistry UseCommanding(ICommandingDependencyResolver dependencyResolver,
                                              IOptions options = null)
        {
            options = options ?? new Options();

            dependencyResolver.AssociatedCommandingRuntime = this;

            ICommandHandlerExecuter commandHandlerExecuter = new CommandHandlerExecuter();

            dependencyResolver.RegisterInstance(commandHandlerExecuter);
            IOptionsProvider optionsProvider = new OptionsProvider(options);

            dependencyResolver.RegisterInstance(optionsProvider);

            // the registry is always shared, but vagaries of different IoC containers mean its dangerous to rely
            // on dependecy resolver checks for an existing registration
            lock (_registryLockObject)
            {
                if (_registry == null || options.Reset)
                {
                    Action <Type> resolverContainerRegistration = type => dependencyResolver.TypeMapping(type, type);
                    _registry = new CommandRegistry(commandHandlerExecuter, options.CommandHandlerContainerRegistration ?? resolverContainerRegistration);
                }
                dependencyResolver.RegisterInstance(_registry);
            }

            // the enricher is always shared, but vagaries of different IoC containers mean its dangerous to rely
            // on dependecy resolver checks for an existing registration
            lock (_enrichmentLockObject)
            {
                if (_dispatchContextEnrichment == null || options.Reset)
                {
                    _dispatchContextEnrichment = new CommandDispatchContextEnrichment(options.Enrichers ?? new List <ICommandDispatchContextEnricher>());
                }
                else if (options.Enrichers != null)
                {
                    _dispatchContextEnrichment.AddEnrichers(options.Enrichers);
                }
                dependencyResolver.RegisterInstance(_dispatchContextEnrichment);
            }

            lock (_auditItemEnricherPipelineLockObject)
            {
                if (_auditItemEnricherPipeline == null || options.Reset)
                {
                    _auditItemEnricherPipeline = new AuditItemEnricherPipeline(
                        options.AuditItemEnricherFactoryFunc ?? (type => (IAuditItemEnricher)dependencyResolver.Resolve(type)));
                }
                dependencyResolver.RegisterInstance(_auditItemEnricherPipeline);
            }

            lock (_auditorPipelineLockObject)
            {
                if (_auditorPipeline == null || options.Reset)
                {
                    _auditorPipeline = new CommandAuditPipeline(t => (ICommandAuditor)dependencyResolver.Resolve(t),
                                                                dependencyResolver.Resolve <ICommandAuditSerializer>,
                                                                _auditItemEnricherPipeline);
                }
                dependencyResolver.RegisterInstance(_auditorPipeline);
            }

            ICommandHandlerFactory commandHandlerFactory = new CommandHandlerFactory(options.CommandHandlerFactoryFunc ?? dependencyResolver.Resolve);

            IPipelineAwareCommandHandlerExecuter pipelineAwareCommandHandlerExecuter = new PipelineAwareCommandHandlerExecuter();

            dependencyResolver.RegisterInstance(commandHandlerFactory);
            dependencyResolver.RegisterInstance(pipelineAwareCommandHandlerExecuter);

            dependencyResolver.TypeMapping <ICommandAuditorFactory, NullCommandAuditorFactory>();
            dependencyResolver.TypeMapping <ICommandScopeManager, AsyncLocalCommandScopeManager>();
            dependencyResolver.TypeMapping <IFrameworkCommandDispatcher, CommandDispatcher>();
            dependencyResolver.TypeMapping <ICommandDispatcher, CommandDispatcher>();
            dependencyResolver.TypeMapping <IFrameworkCommandExecuter, CommandExecuter>();
            dependencyResolver.TypeMapping <ICommandExecuter, CommandExecuter>();
            dependencyResolver.TypeMapping <IDirectCommandExecuter, DirectCommandExecuter>();
            if (options.DisableCorrelationIds)
            {
                dependencyResolver.TypeMapping <ICommandCorrelationIdProvider, DisabledCorrelationIdProvider>();
            }
            else
            {
                if (options.UseLocallyUniqueCorrelationIds)
                {
                    dependencyResolver
                    .TypeMapping <ICommandCorrelationIdProvider, LocallyUniqueCommandCorrelationIdProvider>();
                }
                else
                {
                    dependencyResolver.TypeMapping <ICommandCorrelationIdProvider, CommandCorrelationIdProvider>();
                }
            }

            dependencyResolver.TypeMapping <ICommandAuditSerializer, CommandAuditSerializer>();
            dependencyResolver.TypeMapping(typeof(ICommandExecutionExceptionHandler), options.CommandExecutionExceptionHandler ?? typeof(DefaultCommandExecutionExceptionHandler));

            return(_registry);
        }