public void Dispose() { _isCompleted = true; _cancellationTokenSource.Cancel(); _eventStream.Dispose(); _cancellationTokenSource.Dispose(); }
protected override void Dispose(bool disposing) { if (disposing) { eventStream.Dispose(); } base.Dispose(disposing); }
protected virtual void Dispose(bool disposing) { if (_isCompleted) { if (disposing) { _cancellationTokenSource.Cancel(); _serviceScope.Dispose(); _eventStream.Dispose(); _cancellationTokenSource.Dispose(); } _isCompleted = true; } }
/// <summary> /// The commit aggregate. /// </summary> /// <param name="aggregate"> /// The aggregate. /// </param> /// <param name="commitId"> /// The commit id. /// </param> /// <exception cref="InvalidOperationException"> /// </exception> /// <exception cref="ConcurrencyException"> /// </exception> private void CommitAggregate(Aggregate aggregate, Guid commitId) { // Aggregate identifier has bucket id concatenated with stream id var parts = aggregate.Identifier.Split('#'); if (parts.Length > 2) { throw new InvalidOperationException(); } IEventStream stream = null; try { // Open or create the stream for this aggregate if (parts.Length == 2) { stream = _storeEvents.OpenStream(parts[0], parts[1], 0, int.MaxValue); } else { stream = _storeEvents.OpenStream(parts[0], 0); } // Concurrency check if (stream.StreamRevision != aggregate.ExpectedVersion) { throw new ConcurrencyException(); } // Write each event to the underlying stream foreach (var eventObject in aggregate.Root.GetChanges()) { // Create new message var message = new EventMessage { Body = eventObject }; /*// If the aggregate is derived from ITenantAggregate * // then store TenantId in the message headers * // as this will be used later to determine the servicebus * // partition to use for enterprise-level routing * var tenantAggregate = aggregate.Root as ITenantAggregate; * if (tenantAggregate != null) * { * message.Headers.Add("TenantId", tenantAggregate.TenantId); * }*/ // Add message to the event store stream.Add(message); } // Commit the stream stream.CommitChanges(commitId); } finally { if (stream != null) { stream.Dispose(); stream = null; } } }
public void ShutDown() { _stream.Dispose(); _store.Dispose(); }