/// <summary> /// Deletes a stream /// </summary> /// <param name="streamId">Stream Id</param> public void DeleteStream(Guid streamId) { CheckClosed(); if (SystemStreamId.IsSystemStreamId(streamId)) { throw new InvalidStreamIdException(); } StartTransaction(); try { // Before deleting, set stream size to zero to deallocate all of the space it occupies StorageStream tmpStream = OpenStream(streamId); tmpStream.SetLength(0); tmpStream.Close(); openedStreams.Remove(streamId); streamTable.Remove(streamId); // Remove stream from list of changed streams tmpStream = streamsChangedDuringTransaction.SingleOrDefault(x => x.StreamId == streamId); if (tmpStream != null) { streamsChangedDuringTransaction.Remove(tmpStream); } // Remove stream from list of created streams if (streamsCreatedDuringTransaction.Contains(streamId)) { streamsCreatedDuringTransaction.Remove(streamId); } CommitTransaction(); } catch { RollbackTransaction(); throw; } }