private void OnStreamDeleted(InMemoryEventStream <T> stream) { InMemoryEventStream <T> removed; _streams.TryRemove(stream.Id, out removed); Debug.Assert(ReferenceEquals(removed, stream)); stream.Deleted -= OnStreamDeleted; }
/// <inheritdoc/> public async Task <IEventStream <T> > AddAsync(EventStreamId id) { Requires.NotDefault(id, nameof(id)); var stream = new InMemoryEventStream <T>(id); if (!_streams.TryAdd(id, stream)) { throw new EventStreamAlreadyExistsException(id); } stream.Deleted += OnStreamDeleted; return(stream); }