internal void ApplyTo(Configuration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } configuration.IsUsingInMemoryCommandScheduling(false); var container = configuration.Container; container.Register(c => configuration); container.RegisterDefaultClockName() .Register <ISchedulerClockRepository>( c => c.Resolve <SchedulerClockRepository>()) .Register <IETagChecker>( c => c.Resolve <SqlEventStoreEventStoreETagChecker>()) .Register <ISchedulerClockTrigger>( c => c.Resolve <SchedulerClockTrigger>()); configuration.Container .Resolve <SqlCommandSchedulerPipelineInitializer>() .Initialize(configuration); var commandSchedulerResolver = new CommandSchedulerResolver(container); container .Register( c => new SchedulerClockTrigger( c.Resolve <CommandSchedulerDbContext>, async(serializedCommand, result, db) => { await ConfigurationExtensions.DeserializeAndDeliver(commandSchedulerResolver, serializedCommand, db); result.Add(serializedCommand.Result); })) .Register <ISchedulerClockTrigger>(c => c.Resolve <SchedulerClockTrigger>()); foreach (var configure in configureActions) { configure(configuration); } }
internal void ApplyTo(Configuration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } configuration.IsUsingInMemoryCommandScheduling(false); var container = configuration.Container; container.Register(c => configuration); container.RegisterDefaultClockName() .Register<ISchedulerClockRepository>( c => c.Resolve<SchedulerClockRepository>()) .Register<IETagChecker>( c => c.Resolve<SqlEventStoreEventStoreETagChecker>()) .Register<ISchedulerClockTrigger>( c => c.Resolve<SchedulerClockTrigger>()); configuration.Container .Resolve<SqlCommandSchedulerPipelineInitializer>() .Initialize(configuration); var commandSchedulerResolver = new CommandSchedulerResolver(container); container .Register( c => new SchedulerClockTrigger( c.Resolve<CommandSchedulerDbContext>, async (serializedCommand, result, db) => { await ConfigurationExtensions.DeserializeAndDeliver(commandSchedulerResolver, serializedCommand, db); result.Add(serializedCommand.Result); })) .Register<ISchedulerClockTrigger>(c => c.Resolve<SchedulerClockTrigger>()); foreach (var configure in configureActions) { configure(configuration); } }