/// <summary> /// Forces exclusive using a lockhandler defined by <see cref="IExclusiveSagaAccessLock"/> /// </summary> public static void EnforceExclusiveAccess(this StandardConfigurer <ISagaStorage> configurer, IExclusiveSagaAccessLock locker) { if (configurer == null) { throw new ArgumentNullException(nameof(configurer)); } configurer .OtherService <IPipeline>() .Decorate(c => { var pipeline = c.Get <IPipeline>(); var cancellationToken = c.Get <CancellationToken>(); var step = new EnforceExclusiveSagaAccessIncomingStep(locker, cancellationToken); return(new PipelineStepInjector(pipeline) .OnReceive(step, PipelineRelativePosition.Before, typeof(LoadSagaDataStep))); }); }
public EnforceExclusiveSagaAccessIncomingStep(IExclusiveSagaAccessLock lockHandler, CancellationToken cancellationToken) { _lockHandler = lockHandler; _cancellationToken = cancellationToken; }