/// <summary> /// Returns a new <c>MemoryStream</c> that has decompressed data inside. /// </summary> /// <param name="compressedData"></param> /// <returns>A <c>new MemoryStream</c>.</returns> public MemoryStream DecompressToStream(ReadOnlyMemory <byte> compressedData) { var uncompressedStream = new MemoryStream(CompressionHelpers.GetGzipUncompressedLength(compressedData)); using (var gzipStream = new GZipStream(compressedData.AsStream(), CompressionMode.Decompress, false)) { gzipStream.CopyTo(uncompressedStream); } return(uncompressedStream); }
/// <summary> /// Returns a new <c>MemoryStream</c> that has decompressed data inside. The provided stream is optionally closed. /// </summary> /// <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks> /// <param name="compressedStream"></param> /// <returns></returns> public MemoryStream Decompress(Stream compressedStream, bool leaveStreamOpen = false) { Guard.AgainstNullOrEmpty(compressedStream, nameof(compressedStream)); if (compressedStream.Position == compressedStream.Length) { compressedStream.Seek(0, SeekOrigin.Begin); } var uncompressedStream = new MemoryStream(CompressionHelpers.GetGzipUncompressedLength(compressedStream)); using (var gzipStream = new GZipStream(compressedStream, CompressionMode.Decompress, leaveStreamOpen)) { gzipStream.CopyTo(uncompressedStream); } return(uncompressedStream); }
public ArraySegment <byte> Decompress(ReadOnlyMemory <byte> compressedData) { Guard.AgainstEmpty(compressedData, nameof(compressedData)); using var uncompressedStream = new MemoryStream(CompressionHelpers.GetGzipUncompressedLength(compressedData)); using (var gzipStream = new GZipStream(compressedData.AsStream(), CompressionMode.Decompress, false)) { gzipStream.CopyTo(uncompressedStream); } if (uncompressedStream.TryGetBuffer(out var buffer)) { return(buffer); } else { return(uncompressedStream.ToArray()); } }
/// <summary> /// Returns a new <c>MemoryStream</c> that has decompressed data inside. The provided stream is optionally closed. /// </summary> /// <param name="compressedStream"></param> /// <returns></returns> public async ValueTask <MemoryStream> DecompressAsync(Stream compressedStream, bool leaveStreamOpen = false) { Guard.AgainstNullOrEmpty(compressedStream, nameof(compressedStream)); if (compressedStream.Position == compressedStream.Length) { compressedStream.Seek(0, SeekOrigin.Begin); } var uncompressedStream = new MemoryStream(CompressionHelpers.GetGzipUncompressedLength(compressedStream)); using (var gzipStream = new GZipStream(compressedStream, CompressionMode.Decompress, leaveStreamOpen)) { await gzipStream .CopyToAsync(uncompressedStream) .ConfigureAwait(false); } return(uncompressedStream); }
/// <summary> /// Returns a new <c>MemoryStream</c> that has decompressed data inside. /// </summary> /// <param name="compressedStream"></param> /// <param name="leaveStreamOpen"></param> /// <returns>A <c>new MemoryStream</c>.</returns> public MemoryStream DecompressToStream(ReadOnlyMemory <byte> compressedData) { Guard.AgainstEmpty(compressedData, nameof(compressedData)); var uncompressedStream = RecyclableManager.GetStream(nameof(RecyclableGzipProvider), CompressionHelpers.GetGzipUncompressedLength(compressedData)); using (var gzipStream = new GZipStream(compressedData.AsStream(), CompressionMode.Decompress, false)) { gzipStream.CopyTo(uncompressedStream); } return(uncompressedStream); }
public async ValueTask <ArraySegment <byte> > DecompressAsync(ReadOnlyMemory <byte> compressedData) { Guard.AgainstEmpty(compressedData, nameof(compressedData)); using var uncompressedStream = RecyclableManager.GetStream(nameof(RecyclableGzipProvider), CompressionHelpers.GetGzipUncompressedLength(compressedData)); using (var gzipStream = new GZipStream(compressedData.AsStream(), CompressionMode.Decompress, false)) { await gzipStream .CopyToAsync(uncompressedStream) .ConfigureAwait(false); } if (uncompressedStream.TryGetBuffer(out var buffer)) { return(buffer); } else { // dispose stream after allocation. using (uncompressedStream) { return(uncompressedStream.ToArray()); } } }