async Task RemoveNewSaga(TSaga saga, CancellationToken cancellationToken) { if (_withinLock) { _repository.RemoveWithinLock(saga); } else { await _repository.Remove(saga, cancellationToken).ConfigureAwait(false); } }
private async Task Handle(IEvent e) { // _log.Trace($"{typeof(TSaga).Name}.When({e.EventType}[{e.Stream}])"); _log.Trace($"{e.MessageType}", typeof(TSaga).GetFriendlyName()); try { var emptySaga = new TSaga(); var id = emptySaga.SagaId(e); var isInitializer = emptySaga.IsInitializer(e); TSaga saga; if (isInitializer) { saga = await _repository.GetOrAdd <TSaga>(id); } else { saga = await _repository.Find <TSaga>(id); } if (saga == null) { return; } var saveEvent = ((Event)e).Copy(); saga.When(saveEvent); var commands = saga.GetUncommittedCommands().OfType <Command>(); foreach (var c in commands) { c.AncestorId = e.MessageId; c.CorrelationId = id; } await _repository.Save(saga); } catch (Exception exception) { _log.Errors.Add(exception); } }
public bool PreInsertInstance(ConsumeContext <TMessage> context, out TSaga instance) { return(_policy.PreInsertInstance(context, out instance)); }