예제 #1
0
 public StorageBatch(StorageBatch <TState> previous)
 {
     this.serializerSettings = previous.serializerSettings;
     this.errorInjector      = previous.errorInjector;
     MetaData         = previous.MetaData;
     confirmUpTo      = previous.confirmUpTo;
     cancelAbove      = previous.cancelAbove;
     cancelAboveStart = cancelAbove;
 }
예제 #2
0
 public StorageBatch(TransactionalStorageLoadResponse <TState> loadresponse, JsonSerializerSettings serializerSettings, ITransactionalFaultInjector errorInjector)
 {
     this.serializerSettings = serializerSettings ?? throw new ArgumentNullException(nameof(serializerSettings));
     this.errorInjector      = errorInjector;
     MetaData         = ReadMetaData(loadresponse, this.serializerSettings);
     ETag             = loadresponse.ETag;
     confirmUpTo      = loadresponse.CommittedSequenceId;
     cancelAbove      = loadresponse.PendingStates.LastOrDefault()?.SequenceId ?? loadresponse.CommittedSequenceId;
     cancelAboveStart = cancelAbove;
 }
예제 #3
0
 public TocTransactionQueue(
     TService service,
     IOptions <TransactionalStateOptions> options,
     ParticipantId resource,
     Action deactivate,
     ITransactionalStateStorage <TransactionCommitter <TService> .OperationState> storage,
     JsonSerializerSettings serializerSettings,
     IClock clock,
     ITransactionalFaultInjector errorInjector,
     ILogger logger)
     : base(options, resource, deactivate, storage, serializerSettings, clock, errorInjector, logger)
 {
     this.service = service;
 }
예제 #4
0
 public TransactionQueue(
     IOptions <TransactionalStateOptions> options,
     ParticipantId resource,
     Action deactivate,
     ITransactionalStateStorage <TState> storage,
     JsonSerializerSettings serializerSettings,
     IClock clock,
     ITransactionalFaultInjector errorInjector,
     ILogger logger)
 {
     this.options            = options.Value;
     this.resource           = resource;
     this.deactivate         = deactivate;
     this.storage            = storage;
     this.serializerSettings = serializerSettings;
     this.Clock              = new CausalClock(clock);
     this.errorInjector      = errorInjector;
     this.logger             = logger;
     this.confirmationTasks  = new Dictionary <Guid, TransactionRecord <TState> >();
     this.storageWorker      = new BatchWorkerFromDelegate(StorageWork);
     this.confirmationWorker = new BatchWorkerFromDelegate(ConfirmationWork);
     this.RWLock             = new ReadWriteLock <TState>(options, this, this.storageWorker, logger);
 }