diff --git a/src/SharpCompress/Common/EntryStream.cs b/src/SharpCompress/Common/EntryStream.cs
index 8d6f3f4d..6b3be5c4 100644
--- a/src/SharpCompress/Common/EntryStream.cs
+++ b/src/SharpCompress/Common/EntryStream.cs
@@ -8,10 +8,8 @@ using SharpCompress.Readers;
namespace SharpCompress.Common;
-public partial class EntryStream : Stream, IStreamStack
+public partial class EntryStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private readonly IReader _reader;
private readonly Stream _stream;
private bool _completed;
diff --git a/src/SharpCompress/Common/Tar/TarReadOnlySubStream.cs b/src/SharpCompress/Common/Tar/TarReadOnlySubStream.cs
index 1f095a8d..c1db57be 100644
--- a/src/SharpCompress/Common/Tar/TarReadOnlySubStream.cs
+++ b/src/SharpCompress/Common/Tar/TarReadOnlySubStream.cs
@@ -1,15 +1,12 @@
using System;
using System.IO;
-using SharpCompress.IO;
namespace SharpCompress.Common.Tar;
-internal class TarReadOnlySubStream : Stream, IStreamStack
+internal class TarReadOnlySubStream : Stream
{
private readonly Stream _stream;
- Stream IStreamStack.BaseStream() => _stream;
-
private bool _isDisposed;
private long _amountRead;
diff --git a/src/SharpCompress/Common/Zip/PkwareTraditionalCryptoStream.cs b/src/SharpCompress/Common/Zip/PkwareTraditionalCryptoStream.cs
index b32cfdc6..c3c04a82 100644
--- a/src/SharpCompress/Common/Zip/PkwareTraditionalCryptoStream.cs
+++ b/src/SharpCompress/Common/Zip/PkwareTraditionalCryptoStream.cs
@@ -1,6 +1,5 @@
using System;
using System.IO;
-using SharpCompress.IO;
namespace SharpCompress.Common.Zip;
@@ -10,10 +9,8 @@ internal enum CryptoMode
Decrypt,
}
-internal class PkwareTraditionalCryptoStream : Stream, IStreamStack
+internal class PkwareTraditionalCryptoStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private readonly PkwareTraditionalEncryptionData _encryptor;
private readonly CryptoMode _mode;
private readonly Stream _stream;
diff --git a/src/SharpCompress/Common/Zip/WinzipAesCryptoStream.cs b/src/SharpCompress/Common/Zip/WinzipAesCryptoStream.cs
index af105c57..666bf446 100644
--- a/src/SharpCompress/Common/Zip/WinzipAesCryptoStream.cs
+++ b/src/SharpCompress/Common/Zip/WinzipAesCryptoStream.cs
@@ -2,14 +2,11 @@ using System;
using System.Buffers.Binary;
using System.IO;
using System.Security.Cryptography;
-using SharpCompress.IO;
namespace SharpCompress.Common.Zip;
-internal class WinzipAesCryptoStream : Stream, IStreamStack
+internal class WinzipAesCryptoStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private const int BLOCK_SIZE_IN_BYTES = 16;
private readonly SymmetricAlgorithm _cipher;
private readonly byte[] _counter = new byte[BLOCK_SIZE_IN_BYTES];
diff --git a/src/SharpCompress/Compressors/ADC/ADCStream.cs b/src/SharpCompress/Compressors/ADC/ADCStream.cs
index 2839f19f..74211134 100644
--- a/src/SharpCompress/Compressors/ADC/ADCStream.cs
+++ b/src/SharpCompress/Compressors/ADC/ADCStream.cs
@@ -30,17 +30,14 @@ using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.ADC;
///
/// Provides a forward readable only stream that decompresses ADC data
///
-public sealed partial class ADCStream : Stream, IStreamStack
+public sealed partial class ADCStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
///
/// This stream holds the compressed data
///
diff --git a/src/SharpCompress/Compressors/ArcLzw/ArcLzwStream.cs b/src/SharpCompress/Compressors/ArcLzw/ArcLzwStream.cs
index 89c8ded3..11110690 100644
--- a/src/SharpCompress/Compressors/ArcLzw/ArcLzwStream.cs
+++ b/src/SharpCompress/Compressors/ArcLzw/ArcLzwStream.cs
@@ -4,12 +4,9 @@ using System.IO;
using System.Linq;
using SharpCompress.Compressors.RLE90;
using SharpCompress.Compressors.Squeezed;
-using SharpCompress.IO;
-public partial class ArcLzwStream : Stream, IStreamStack
+public partial class ArcLzwStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private Stream _stream;
private bool _processed;
private bool _useCrunched;
diff --git a/src/SharpCompress/Compressors/Arj/LHDecoderStream.cs b/src/SharpCompress/Compressors/Arj/LHDecoderStream.cs
index 5a23e951..4ada9767 100644
--- a/src/SharpCompress/Compressors/Arj/LHDecoderStream.cs
+++ b/src/SharpCompress/Compressors/Arj/LHDecoderStream.cs
@@ -1,15 +1,12 @@
using System;
using System.Collections.Generic;
using System.IO;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Arj
{
[CLSCompliant(true)]
- public sealed partial class LHDecoderStream : Stream, IStreamStack
+ public sealed partial class LHDecoderStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private readonly BitReader _bitReader;
private readonly Stream _stream;
diff --git a/src/SharpCompress/Compressors/Arj/LhaStream.cs b/src/SharpCompress/Compressors/Arj/LhaStream.cs
index 49ceed95..7759c313 100644
--- a/src/SharpCompress/Compressors/Arj/LhaStream.cs
+++ b/src/SharpCompress/Compressors/Arj/LhaStream.cs
@@ -2,12 +2,11 @@ using System;
using System.Data;
using System.IO;
using System.Linq;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Arj
{
[CLSCompliant(true)]
- public sealed class LhaStream : Stream, IStreamStack
+ public sealed class LhaStream : Stream
where C : ILhaDecoderConfig, new()
{
private readonly BitReader _bitReader;
@@ -26,8 +25,6 @@ namespace SharpCompress.Compressors.Arj
private readonly int _originalSize;
private int _producedBytes = 0;
- Stream IStreamStack.BaseStream() => _stream;
-
public LhaStream(Stream compressedStream, int originalSize)
{
_stream = compressedStream ?? throw new ArgumentNullException(nameof(compressedStream));
diff --git a/src/SharpCompress/Compressors/BZip2/BZip2Stream.cs b/src/SharpCompress/Compressors/BZip2/BZip2Stream.cs
index 012481df..c145cb81 100644
--- a/src/SharpCompress/Compressors/BZip2/BZip2Stream.cs
+++ b/src/SharpCompress/Compressors/BZip2/BZip2Stream.cs
@@ -2,14 +2,11 @@ using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.BZip2;
-public sealed partial class BZip2Stream : Stream, IStreamStack
+public sealed partial class BZip2Stream : Stream
{
- Stream IStreamStack.BaseStream() => stream;
-
private Stream stream = default!;
private bool isDisposed;
private bool leaveOpen;
diff --git a/src/SharpCompress/Compressors/BZip2/CBZip2InputStream.cs b/src/SharpCompress/Compressors/BZip2/CBZip2InputStream.cs
index 304c4ecf..e303d7d0 100644
--- a/src/SharpCompress/Compressors/BZip2/CBZip2InputStream.cs
+++ b/src/SharpCompress/Compressors/BZip2/CBZip2InputStream.cs
@@ -5,7 +5,6 @@ using System.Buffers;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
/*
* Copyright 2001,2004-2005 The Apache Software Foundation
@@ -41,10 +40,8 @@ namespace SharpCompress.Compressors.BZip2;
* start of the BZIP2 stream to make it compatible with other PGP programs.
*/
-internal partial class CBZip2InputStream : Stream, IStreamStack
+internal partial class CBZip2InputStream : Stream
{
- Stream IStreamStack.BaseStream() => bsStream;
-
private static void Cadvise()
{
//System.out.Println("CRC Error");
diff --git a/src/SharpCompress/Compressors/BZip2/CBZip2OutputStream.cs b/src/SharpCompress/Compressors/BZip2/CBZip2OutputStream.cs
index 6a89a0f2..c3a0348e 100644
--- a/src/SharpCompress/Compressors/BZip2/CBZip2OutputStream.cs
+++ b/src/SharpCompress/Compressors/BZip2/CBZip2OutputStream.cs
@@ -2,8 +2,6 @@ using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
-
/*
* Copyright 2001,2004-2005 The Apache Software Foundation
*
@@ -41,10 +39,8 @@ namespace SharpCompress.Compressors.BZip2;
* start of the BZIP2 stream to make it compatible with other PGP programs.
*/
-internal sealed class CBZip2OutputStream : Stream, IStreamStack
+internal sealed class CBZip2OutputStream : Stream
{
- Stream IStreamStack.BaseStream() => bsStream;
-
private const int SETMASK = (1 << 21);
private const int CLEARMASK = (~SETMASK);
private const int GREATER_ICOST = 15;
diff --git a/src/SharpCompress/Compressors/Deflate/DeflateStream.cs b/src/SharpCompress/Compressors/Deflate/DeflateStream.cs
index 3f5ad0b8..7fd65184 100644
--- a/src/SharpCompress/Compressors/Deflate/DeflateStream.cs
+++ b/src/SharpCompress/Compressors/Deflate/DeflateStream.cs
@@ -29,14 +29,11 @@ using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Deflate;
-public partial class DeflateStream : Stream, IStreamStack
+public partial class DeflateStream : Stream
{
- Stream IStreamStack.BaseStream() => _baseStream;
-
private readonly ZlibBaseStream _baseStream;
private bool _disposed;
private readonly bool _leaveOpen;
diff --git a/src/SharpCompress/Compressors/Deflate/GZipStream.cs b/src/SharpCompress/Compressors/Deflate/GZipStream.cs
index b95fc3f7..f3857b2c 100644
--- a/src/SharpCompress/Compressors/Deflate/GZipStream.cs
+++ b/src/SharpCompress/Compressors/Deflate/GZipStream.cs
@@ -32,14 +32,11 @@ using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Deflate;
-public partial class GZipStream : Stream, IStreamStack
+public partial class GZipStream : Stream
{
- Stream IStreamStack.BaseStream() => BaseStream;
-
internal static readonly DateTime UNIX_EPOCH = new(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
private string? _comment;
diff --git a/src/SharpCompress/Compressors/Deflate/ZlibBaseStream.cs b/src/SharpCompress/Compressors/Deflate/ZlibBaseStream.cs
index 04158ee6..3fa7538d 100644
--- a/src/SharpCompress/Compressors/Deflate/ZlibBaseStream.cs
+++ b/src/SharpCompress/Compressors/Deflate/ZlibBaseStream.cs
@@ -34,7 +34,6 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common.Tar.Headers;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Deflate;
@@ -45,10 +44,8 @@ internal enum ZlibStreamFlavor
GZIP = 1952,
}
-internal class ZlibBaseStream : Stream, IStreamStack
+internal class ZlibBaseStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
protected internal ZlibCodec _z; // deferred init... new ZlibCodec();
protected internal StreamMode _streamMode = StreamMode.Undefined;
diff --git a/src/SharpCompress/Compressors/Deflate/ZlibStream.cs b/src/SharpCompress/Compressors/Deflate/ZlibStream.cs
index 5088d6da..ede19f6f 100644
--- a/src/SharpCompress/Compressors/Deflate/ZlibStream.cs
+++ b/src/SharpCompress/Compressors/Deflate/ZlibStream.cs
@@ -30,14 +30,11 @@ using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Deflate;
-public partial class ZlibStream : Stream, IStreamStack
+public partial class ZlibStream : Stream
{
- Stream IStreamStack.BaseStream() => _baseStream;
-
private readonly ZlibBaseStream _baseStream;
private bool _disposed;
diff --git a/src/SharpCompress/Compressors/Deflate64/Deflate64Stream.cs b/src/SharpCompress/Compressors/Deflate64/Deflate64Stream.cs
index 286d3d07..2300cfbc 100644
--- a/src/SharpCompress/Compressors/Deflate64/Deflate64Stream.cs
+++ b/src/SharpCompress/Compressors/Deflate64/Deflate64Stream.cs
@@ -10,14 +10,11 @@ using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.Common.Zip;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Deflate64;
-public sealed partial class Deflate64Stream : Stream, IStreamStack
+public sealed partial class Deflate64Stream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private const int DEFAULT_BUFFER_SIZE = 8192;
private Stream _stream;
diff --git a/src/SharpCompress/Compressors/Explode/ExplodeStream.cs b/src/SharpCompress/Compressors/Explode/ExplodeStream.cs
index 5014d4e4..92fda51c 100644
--- a/src/SharpCompress/Compressors/Explode/ExplodeStream.cs
+++ b/src/SharpCompress/Compressors/Explode/ExplodeStream.cs
@@ -1,14 +1,11 @@
using System;
using System.IO;
using SharpCompress.Common.Zip.Headers;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Explode;
-public partial class ExplodeStream : Stream, IStreamStack
+public partial class ExplodeStream : Stream
{
- Stream IStreamStack.BaseStream() => inStream;
-
private const int INVALID_CODE = 99;
private const int WSIZE = 64 * 1024;
diff --git a/src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs b/src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs
index f81d5f56..bad6afbd 100644
--- a/src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs
+++ b/src/SharpCompress/Compressors/LZMA/AesDecoderStream.cs
@@ -5,14 +5,11 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Compressors.LZMA.Utilites;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.LZMA;
-internal sealed partial class AesDecoderStream : DecoderStream2, IStreamStack
+internal sealed partial class AesDecoderStream : DecoderStream2
{
- Stream IStreamStack.BaseStream() => mStream;
-
private readonly Stream mStream;
private readonly ICryptoTransform mDecoder;
private readonly byte[] mBuffer;
diff --git a/src/SharpCompress/Compressors/LZMA/Bcj2DecoderStream.cs b/src/SharpCompress/Compressors/LZMA/Bcj2DecoderStream.cs
index 2fab0880..caaf15e1 100644
--- a/src/SharpCompress/Compressors/LZMA/Bcj2DecoderStream.cs
+++ b/src/SharpCompress/Compressors/LZMA/Bcj2DecoderStream.cs
@@ -3,14 +3,11 @@ using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.LZMA;
-internal class Bcj2DecoderStream : DecoderStream2, IStreamStack
+internal class Bcj2DecoderStream : DecoderStream2
{
- Stream IStreamStack.BaseStream() => _mMainStream;
-
private const int K_NUM_TOP_BITS = 24;
private const uint K_TOP_VALUE = (1 << K_NUM_TOP_BITS);
diff --git a/src/SharpCompress/Compressors/LZMA/LZipStream.cs b/src/SharpCompress/Compressors/LZMA/LZipStream.cs
index c827f4ef..30be9b62 100644
--- a/src/SharpCompress/Compressors/LZMA/LZipStream.cs
+++ b/src/SharpCompress/Compressors/LZMA/LZipStream.cs
@@ -17,10 +17,8 @@ namespace SharpCompress.Compressors.LZMA;
///
/// Stream supporting the LZIP format, as documented at http://www.nongnu.org/lzip/manual/lzip_manual.html
///
-public sealed partial class LZipStream : Stream, IStreamStack
+public sealed partial class LZipStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private readonly Stream _stream;
private readonly CountingStream? _countingWritableSubStream;
private bool _disposed;
diff --git a/src/SharpCompress/Compressors/LZMA/LzmaStream.cs b/src/SharpCompress/Compressors/LZMA/LzmaStream.cs
index 6ca9a14d..42d548d7 100644
--- a/src/SharpCompress/Compressors/LZMA/LzmaStream.cs
+++ b/src/SharpCompress/Compressors/LZMA/LzmaStream.cs
@@ -4,14 +4,11 @@ using System.IO;
using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Compressors.LZMA.LZ;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.LZMA;
-public partial class LzmaStream : Stream, IStreamStack
+public partial class LzmaStream : Stream
{
- Stream IStreamStack.BaseStream() => _inputStream!;
-
private readonly Stream? _inputStream;
private readonly long _inputSize;
private readonly long _outputSize;
diff --git a/src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.Async.cs b/src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.Async.cs
index 8cf2d974..cca7b2dd 100644
--- a/src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.Async.cs
+++ b/src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.Async.cs
@@ -2,11 +2,10 @@ using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.LZMA.Utilites;
-internal partial class CrcBuilderStream : Stream, IStreamStack
+internal partial class CrcBuilderStream : Stream
{
public override async Task WriteAsync(
byte[] buffer,
diff --git a/src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.cs b/src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.cs
index 7281e9d7..e935fe6f 100644
--- a/src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.cs
+++ b/src/SharpCompress/Compressors/LZMA/Utilites/CrcBuilderStream.cs
@@ -2,14 +2,11 @@ using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.LZMA.Utilites;
-internal partial class CrcBuilderStream : Stream, IStreamStack
+internal partial class CrcBuilderStream : Stream
{
- Stream IStreamStack.BaseStream() => _mTarget;
-
private readonly Stream _mTarget;
private uint _mCrc;
private bool _mFinished;
diff --git a/src/SharpCompress/Compressors/Lzw/LzwStream.cs b/src/SharpCompress/Compressors/Lzw/LzwStream.cs
index e6b3b352..4a563c62 100644
--- a/src/SharpCompress/Compressors/Lzw/LzwStream.cs
+++ b/src/SharpCompress/Compressors/Lzw/LzwStream.cs
@@ -3,7 +3,6 @@ using System.IO;
using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Lzw
{
@@ -45,10 +44,8 @@ namespace SharpCompress.Compressors.Lzw
/// }
///
///
- public partial class LzwStream : Stream, IStreamStack
+ public partial class LzwStream : Stream
{
- Stream IStreamStack.BaseStream() => baseInputStream;
-
public static bool IsLzwStream(Stream stream)
{
try
diff --git a/src/SharpCompress/Compressors/PPMd/PpmdStream.cs b/src/SharpCompress/Compressors/PPMd/PpmdStream.cs
index 893c718b..e1f03de7 100644
--- a/src/SharpCompress/Compressors/PPMd/PpmdStream.cs
+++ b/src/SharpCompress/Compressors/PPMd/PpmdStream.cs
@@ -7,14 +7,11 @@ using System.Threading.Tasks;
using SharpCompress.Compressors.LZMA.RangeCoder;
using SharpCompress.Compressors.PPMd.H;
using SharpCompress.Compressors.PPMd.I1;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.PPMd;
-public class PpmdStream : Stream, IStreamStack
+public class PpmdStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private readonly PpmdProperties _properties;
private readonly Stream _stream;
private readonly bool _compress;
diff --git a/src/SharpCompress/Compressors/RLE90/RunLength90Stream.cs b/src/SharpCompress/Compressors/RLE90/RunLength90Stream.cs
index 030e79b4..87d7b957 100644
--- a/src/SharpCompress/Compressors/RLE90/RunLength90Stream.cs
+++ b/src/SharpCompress/Compressors/RLE90/RunLength90Stream.cs
@@ -1,6 +1,5 @@
using System;
using System.IO;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.RLE90
{
@@ -8,10 +7,8 @@ namespace SharpCompress.Compressors.RLE90
/// Real-time streaming RLE90 decompression stream.
/// Decompresses bytes on demand without buffering the entire file in memory.
///
- public class RunLength90Stream : Stream, IStreamStack
+ public class RunLength90Stream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private readonly Stream _stream;
private readonly int _compressedSize;
private int _bytesReadFromSource;
diff --git a/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyAsyncStream.Async.cs b/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyAsyncStream.Async.cs
index 2d0bc2b8..e0b34720 100644
--- a/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyAsyncStream.Async.cs
+++ b/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyAsyncStream.Async.cs
@@ -5,13 +5,10 @@ using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.Common.Rar;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal sealed partial class MultiVolumeReadOnlyAsyncStream
- : MultiVolumeReadOnlyStreamBase,
- IStreamStack
+internal sealed partial class MultiVolumeReadOnlyAsyncStream : MultiVolumeReadOnlyStreamBase
{
internal static async ValueTask Create(
IAsyncEnumerable parts
diff --git a/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyAsyncStream.cs b/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyAsyncStream.cs
index 9f11866c..6f4c8b88 100644
--- a/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyAsyncStream.cs
+++ b/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyAsyncStream.cs
@@ -4,16 +4,11 @@ using System.IO;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.Common.Rar;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal sealed partial class MultiVolumeReadOnlyAsyncStream
- : MultiVolumeReadOnlyStreamBase,
- IStreamStack
+internal sealed partial class MultiVolumeReadOnlyAsyncStream : MultiVolumeReadOnlyStreamBase
{
- Stream IStreamStack.BaseStream() => currentStream.NotNull();
-
private long currentPosition;
private long maxPosition;
diff --git a/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.Async.cs b/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.Async.cs
index 122ccda5..15699db7 100644
--- a/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.Async.cs
+++ b/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.Async.cs
@@ -5,13 +5,10 @@ using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.Common.Rar;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal sealed partial class MultiVolumeReadOnlyStream
- : MultiVolumeReadOnlyStreamBase,
- IStreamStack
+internal sealed partial class MultiVolumeReadOnlyStream : MultiVolumeReadOnlyStreamBase
{
public override async Task ReadAsync(
byte[] buffer,
diff --git a/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.cs b/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.cs
index 53d71381..161922be 100644
--- a/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.cs
+++ b/src/SharpCompress/Compressors/Rar/MultiVolumeReadOnlyStream.cs
@@ -3,16 +3,11 @@ using System.Collections.Generic;
using System.IO;
using SharpCompress.Common;
using SharpCompress.Common.Rar;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal sealed partial class MultiVolumeReadOnlyStream
- : MultiVolumeReadOnlyStreamBase,
- IStreamStack
+internal sealed partial class MultiVolumeReadOnlyStream : MultiVolumeReadOnlyStreamBase
{
- Stream IStreamStack.BaseStream() => currentStream.NotNull();
-
private long currentPosition;
private long maxPosition;
diff --git a/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.Async.cs b/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.Async.cs
index 5c657009..4015b420 100644
--- a/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.Async.cs
+++ b/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.Async.cs
@@ -4,11 +4,10 @@ using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.Common.Rar.Headers;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal partial class RarBLAKE2spStream : RarStream, IStreamStack
+internal partial class RarBLAKE2spStream : RarStream
{
public static async ValueTask CreateAsync(
IRarUnpack unpack,
diff --git a/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs b/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs
index 0b692154..42dd25c9 100644
--- a/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs
+++ b/src/SharpCompress/Compressors/Rar/RarBLAKE2spStream.cs
@@ -5,14 +5,11 @@ using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.Common.Rar.Headers;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal partial class RarBLAKE2spStream : RarStream, IStreamStack
+internal partial class RarBLAKE2spStream : RarStream
{
- Stream IStreamStack.BaseStream() => readStream;
-
private readonly MultiVolumeReadOnlyStreamBase readStream;
private readonly bool disableCRCCheck;
diff --git a/src/SharpCompress/Compressors/Rar/RarCrcStream.Async.cs b/src/SharpCompress/Compressors/Rar/RarCrcStream.Async.cs
index 040e01bc..f49f63ba 100644
--- a/src/SharpCompress/Compressors/Rar/RarCrcStream.Async.cs
+++ b/src/SharpCompress/Compressors/Rar/RarCrcStream.Async.cs
@@ -4,11 +4,10 @@ using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.Common.Rar.Headers;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal partial class RarCrcStream : RarStream, IStreamStack
+internal partial class RarCrcStream : RarStream
{
public static async ValueTask CreateAsync(
IRarUnpack unpack,
diff --git a/src/SharpCompress/Compressors/Rar/RarCrcStream.cs b/src/SharpCompress/Compressors/Rar/RarCrcStream.cs
index 30626d76..8adf324a 100644
--- a/src/SharpCompress/Compressors/Rar/RarCrcStream.cs
+++ b/src/SharpCompress/Compressors/Rar/RarCrcStream.cs
@@ -4,14 +4,11 @@ using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.Common.Rar.Headers;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal partial class RarCrcStream : RarStream, IStreamStack
+internal partial class RarCrcStream : RarStream
{
- Stream IStreamStack.BaseStream() => readStream;
-
private readonly MultiVolumeReadOnlyStreamBase readStream;
private uint currentCrc;
private readonly bool disableCRC;
diff --git a/src/SharpCompress/Compressors/Rar/RarStream.cs b/src/SharpCompress/Compressors/Rar/RarStream.cs
index cb74abe4..31e7b11c 100644
--- a/src/SharpCompress/Compressors/Rar/RarStream.cs
+++ b/src/SharpCompress/Compressors/Rar/RarStream.cs
@@ -4,14 +4,11 @@ using System;
using System.Buffers;
using System.IO;
using SharpCompress.Common.Rar.Headers;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Rar;
-internal partial class RarStream : Stream, IStreamStack
+internal partial class RarStream : Stream
{
- Stream IStreamStack.BaseStream() => readStream;
-
private readonly IRarUnpack unpack;
private readonly FileHeader fileHeader;
private readonly Stream readStream;
diff --git a/src/SharpCompress/Compressors/Reduce/ReduceStream.cs b/src/SharpCompress/Compressors/Reduce/ReduceStream.cs
index 97d534ed..ad95d207 100644
--- a/src/SharpCompress/Compressors/Reduce/ReduceStream.cs
+++ b/src/SharpCompress/Compressors/Reduce/ReduceStream.cs
@@ -1,13 +1,10 @@
using System;
using System.IO;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Reduce;
-public partial class ReduceStream : Stream, IStreamStack
+public partial class ReduceStream : Stream
{
- Stream IStreamStack.BaseStream() => inStream;
-
private readonly long unCompressedSize;
private readonly long compressedSize;
private readonly Stream inStream;
diff --git a/src/SharpCompress/Compressors/Shrink/ShrinkStream.Async.cs b/src/SharpCompress/Compressors/Shrink/ShrinkStream.Async.cs
index 7e812145..437a55f0 100644
--- a/src/SharpCompress/Compressors/Shrink/ShrinkStream.Async.cs
+++ b/src/SharpCompress/Compressors/Shrink/ShrinkStream.Async.cs
@@ -2,11 +2,10 @@ using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Shrink;
-internal partial class ShrinkStream : Stream, IStreamStack
+internal partial class ShrinkStream : Stream
{
internal static async ValueTask CreateAsync(
Stream stream,
diff --git a/src/SharpCompress/Compressors/Shrink/ShrinkStream.cs b/src/SharpCompress/Compressors/Shrink/ShrinkStream.cs
index 3680b0d8..14bc6c3d 100644
--- a/src/SharpCompress/Compressors/Shrink/ShrinkStream.cs
+++ b/src/SharpCompress/Compressors/Shrink/ShrinkStream.cs
@@ -1,14 +1,11 @@
using System;
using System.IO;
using SharpCompress;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Shrink;
-internal partial class ShrinkStream : Stream, IStreamStack
+internal partial class ShrinkStream : Stream
{
- Stream IStreamStack.BaseStream() => inStream;
-
private Stream inStream;
private CompressionMode _compressionMode;
diff --git a/src/SharpCompress/Compressors/Squeezed/SqueezedStream.cs b/src/SharpCompress/Compressors/Squeezed/SqueezedStream.cs
index dda78b87..553c2945 100644
--- a/src/SharpCompress/Compressors/Squeezed/SqueezedStream.cs
+++ b/src/SharpCompress/Compressors/Squeezed/SqueezedStream.cs
@@ -3,15 +3,12 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
using SharpCompress.Compressors.RLE90;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Squeezed
{
[CLSCompliant(true)]
- public class SqueezeStream : Stream, IStreamStack
+ public class SqueezeStream : Stream
{
- Stream IStreamStack.BaseStream() => _stream;
-
private readonly Stream _stream;
private readonly int _compressedSize;
private const int NUMVALS = 257;
diff --git a/src/SharpCompress/Compressors/Xz/XZReadOnlyStream.cs b/src/SharpCompress/Compressors/Xz/XZReadOnlyStream.cs
index 51c65cde..5541fb2d 100644
--- a/src/SharpCompress/Compressors/Xz/XZReadOnlyStream.cs
+++ b/src/SharpCompress/Compressors/Xz/XZReadOnlyStream.cs
@@ -1,13 +1,10 @@
using System.IO;
using SharpCompress.Common;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Xz;
-public abstract class XZReadOnlyStream : ReadOnlyStream, IStreamStack
+public abstract class XZReadOnlyStream : ReadOnlyStream
{
- Stream IStreamStack.BaseStream() => base.BaseStream;
-
public XZReadOnlyStream(Stream stream)
{
BaseStream = stream;
diff --git a/src/SharpCompress/Compressors/Xz/XZStream.cs b/src/SharpCompress/Compressors/Xz/XZStream.cs
index 68104cf2..dda9aa78 100644
--- a/src/SharpCompress/Compressors/Xz/XZStream.cs
+++ b/src/SharpCompress/Compressors/Xz/XZStream.cs
@@ -5,15 +5,12 @@ using System.IO;
using System.Threading;
using System.Threading.Tasks;
using SharpCompress.Common;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.Xz;
[CLSCompliant(false)]
-public sealed partial class XZStream : XZReadOnlyStream, IStreamStack
+public sealed partial class XZStream : XZReadOnlyStream
{
- Stream IStreamStack.BaseStream() => _baseStream;
-
public XZStream(Stream baseStream)
: base(baseStream)
{
diff --git a/src/SharpCompress/Compressors/ZStandard/ZStandardStream.cs b/src/SharpCompress/Compressors/ZStandard/ZStandardStream.cs
index 09f5130a..3a4ffbb0 100644
--- a/src/SharpCompress/Compressors/ZStandard/ZStandardStream.cs
+++ b/src/SharpCompress/Compressors/ZStandard/ZStandardStream.cs
@@ -5,16 +5,13 @@ using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Compressors.ZStandard;
-internal partial class ZStandardStream : DecompressionStream, IStreamStack
+internal partial class ZStandardStream : DecompressionStream
{
private readonly Stream stream;
- Stream IStreamStack.BaseStream() => stream;
-
internal static bool IsZStandard(Stream stream)
{
var buffer = new byte[4];
diff --git a/src/SharpCompress/Crypto/Crc32Stream.cs b/src/SharpCompress/Crypto/Crc32Stream.cs
index a31e1542..73a04ed3 100644
--- a/src/SharpCompress/Crypto/Crc32Stream.cs
+++ b/src/SharpCompress/Crypto/Crc32Stream.cs
@@ -2,15 +2,12 @@
using System;
using System.IO;
-using SharpCompress.IO;
namespace SharpCompress.Crypto;
[CLSCompliant(false)]
-public sealed class Crc32Stream : Stream, IStreamStack
+public sealed class Crc32Stream : Stream
{
- Stream IStreamStack.BaseStream() => stream;
-
private readonly Stream stream;
private readonly uint[] _table;
private uint seed;
diff --git a/tests/SharpCompress.Test/Mocks/AsyncOnlyStream.cs b/tests/SharpCompress.Test/Mocks/AsyncOnlyStream.cs
index ca3a08d2..291bae8d 100644
--- a/tests/SharpCompress.Test/Mocks/AsyncOnlyStream.cs
+++ b/tests/SharpCompress.Test/Mocks/AsyncOnlyStream.cs
@@ -2,20 +2,13 @@ using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-using SharpCompress.IO;
namespace SharpCompress.Test.Mocks;
-public class AsyncOnlyStream : Stream, IStreamStack
+public class AsyncOnlyStream : Stream
{
private readonly Stream _stream;
-#if DEBUG_STREAMS
- long IStreamStack.InstanceId { get; set; }
-#endif
-
- Stream IStreamStack.BaseStream() => _stream;
-
public AsyncOnlyStream(Stream stream)
{
_stream = stream ?? throw new ArgumentNullException(nameof(stream));
diff --git a/tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs b/tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs
index 16dc9d0b..c93552cf 100644
--- a/tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs
+++ b/tests/SharpCompress.Test/Zip/ZipReaderAsyncTests.cs
@@ -83,6 +83,30 @@ public class ZipReaderAsyncTests : ReaderTests
}
}
+ [Fact]
+ public async ValueTask Zip_Deflate_Streamed2_Skip_Async()
+ {
+ using Stream stream = new ForwardOnlyStream(
+ File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.dd-.zip"))
+ );
+ await using var reader = await ReaderFactory.OpenAsyncReader(new AsyncOnlyStream(stream));
+ var x = 0;
+ while (await reader.MoveToNextEntryAsync())
+ {
+ if (!reader.Entry.IsDirectory)
+ {
+ x++;
+ if (x % 2 == 0)
+ {
+ await reader.WriteEntryToDirectoryAsync(
+ SCRATCH_FILES_PATH,
+ new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
+ );
+ }
+ }
+ }
+ }
+
[Fact]
public async ValueTask Zip_Deflate_Read_Async() =>
await ReadAsync("Zip.deflate.zip", CompressionType.Deflate);
diff --git a/tests/SharpCompress.Test/Zip/ZipReaderTests.cs b/tests/SharpCompress.Test/Zip/ZipReaderTests.cs
index 275d6fba..65a307a2 100644
--- a/tests/SharpCompress.Test/Zip/ZipReaderTests.cs
+++ b/tests/SharpCompress.Test/Zip/ZipReaderTests.cs
@@ -80,6 +80,30 @@ public class ZipReaderTests : ReaderTests
}
}
+ [Fact]
+ public void Zip_Deflate_Streamed2_Skip()
+ {
+ using Stream stream = new ForwardOnlyStream(
+ File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Zip.deflate.dd-.zip"))
+ );
+ using var reader = ReaderFactory.OpenReader(stream);
+ var x = 0;
+ while (reader.MoveToNextEntry())
+ {
+ if (!reader.Entry.IsDirectory)
+ {
+ x++;
+ if (x % 2 == 0)
+ {
+ reader.WriteEntryToDirectory(
+ SCRATCH_FILES_PATH,
+ new ExtractionOptions { ExtractFullPath = true, Overwrite = true }
+ );
+ }
+ }
+ }
+ }
+
[Fact]
public void Zip_Deflate_Read() => Read("Zip.deflate.zip", CompressionType.Deflate);