diff --git a/src/SharpCompress/Archives/Tar/TarArchive.cs b/src/SharpCompress/Archives/Tar/TarArchive.cs index 94d33e38..5bec4e00 100644 --- a/src/SharpCompress/Archives/Tar/TarArchive.cs +++ b/src/SharpCompress/Archives/Tar/TarArchive.cs @@ -184,7 +184,7 @@ namespace SharpCompress.Archives.Tar IAsyncEnumerable newEntries, CancellationToken cancellationToken = default) { - await using var writer = new TarWriter(stream, new TarWriterOptions(options)); + await using var writer = await TarWriter.CreateAsync(stream, new TarWriterOptions(options), cancellationToken); await foreach (var entry in oldEntries.Concat(newEntries) .Where(x => !x.IsDirectory) .WithCancellation(cancellationToken)) diff --git a/src/SharpCompress/Common/SevenZip/ArchiveReader.cs b/src/SharpCompress/Common/SevenZip/ArchiveReader.cs index 1ef60c0c..5547a8e5 100644 --- a/src/SharpCompress/Common/SevenZip/ArchiveReader.cs +++ b/src/SharpCompress/Common/SevenZip/ArchiveReader.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; +using System.Threading; +using System.Threading.Tasks; using SharpCompress.Compressors.LZMA; using SharpCompress.Compressors.LZMA.Utilites; using SharpCompress.IO; @@ -783,7 +785,7 @@ namespace SharpCompress.Common.SevenZip } } - private List ReadAndDecodePackedStreams(long baseOffset, IPasswordProvider pass) + private async ValueTask> ReadAndDecodePackedStreams(long baseOffset, IPasswordProvider pass, CancellationToken cancellationToken) { #if DEBUG Log.WriteLine("-- ReadAndDecodePackedStreams --"); @@ -815,8 +817,8 @@ namespace SharpCompress.Common.SevenZip dataStartPos += packSize; } - var outStream = DecoderStreamHelper.CreateDecoderStream(_stream, oldDataStartPos, myPackSizes, - folder, pass); + var outStream = await DecoderStreamHelper.CreateDecoderStream(_stream, oldDataStartPos, myPackSizes, + folder, pass, cancellationToken); int unpackSize = checked((int)folder.GetUnpackSize()); byte[] data = new byte[unpackSize]; @@ -845,7 +847,7 @@ namespace SharpCompress.Common.SevenZip } } - private void ReadHeader(ArchiveDatabase db, IPasswordProvider getTextPassword) + private async ValueTask ReadHeader(ArchiveDatabase db, IPasswordProvider getTextPassword, CancellationToken cancellationToken) { #if DEBUG Log.WriteLine("-- ReadHeader --"); @@ -864,7 +866,7 @@ namespace SharpCompress.Common.SevenZip List dataVector = null; if (type == BlockType.AdditionalStreamsInfo) { - dataVector = ReadAndDecodePackedStreams(db._startPositionAfterHeader, getTextPassword); + dataVector = await ReadAndDecodePackedStreams(db._startPositionAfterHeader, getTextPassword, cancellationToken); type = ReadId(); } diff --git a/src/SharpCompress/Common/Zip/ZipFilePart.cs b/src/SharpCompress/Common/Zip/ZipFilePart.cs index 03a50326..bb7aa7dc 100644 --- a/src/SharpCompress/Common/Zip/ZipFilePart.cs +++ b/src/SharpCompress/Common/Zip/ZipFilePart.cs @@ -10,7 +10,7 @@ using SharpCompress.Compressors.BZip2; using SharpCompress.Compressors.Deflate; using SharpCompress.Compressors.Deflate64; using SharpCompress.Compressors.LZMA; -using SharpCompress.Compressors.PPMd; +//using SharpCompress.Compressors.PPMd; using SharpCompress.IO; namespace SharpCompress.Common.Zip @@ -75,7 +75,7 @@ namespace SharpCompress.Common.Zip } case ZipCompressionMethod.BZip2: { - return new BZip2Stream(stream, CompressionMode.Decompress, false); + return await BZip2Stream.CreateAsync(stream, CompressionMode.Decompress, false, cancellationToken); } case ZipCompressionMethod.LZMA: { @@ -93,11 +93,11 @@ namespace SharpCompress.Common.Zip ? -1 : (long)Header.UncompressedSize); } - case ZipCompressionMethod.PPMd: + /* case ZipCompressionMethod.PPMd: { var props = await stream.ReadBytes(2, cancellationToken); return new PpmdStream(new PpmdProperties(props), stream, false); - } + } */ case ZipCompressionMethod.WinzipAes: { ExtraData? data = Header.Extra.SingleOrDefault(x => x.Type == ExtraDataType.WinZipAes); diff --git a/src/SharpCompress/Compressors/LZMA/DecoderStream.cs b/src/SharpCompress/Compressors/LZMA/DecoderStream.cs index 1921ebab..27b301e4 100644 --- a/src/SharpCompress/Compressors/LZMA/DecoderStream.cs +++ b/src/SharpCompress/Compressors/LZMA/DecoderStream.cs @@ -1,5 +1,7 @@ using System; using System.IO; +using System.Threading; +using System.Threading.Tasks; using SharpCompress.Common.SevenZip; using SharpCompress.Compressors.LZMA.Utilites; using SharpCompress.IO; @@ -91,8 +93,9 @@ namespace SharpCompress.Compressors.LZMA } } - private static Stream CreateDecoderStream(Stream[] packStreams, long[] packSizes, Stream[] outStreams, - CFolder folderInfo, int coderIndex, IPasswordProvider pass) + private static async ValueTask CreateDecoderStream(Stream[] packStreams, long[] packSizes, Stream[] outStreams, + CFolder folderInfo, int coderIndex, IPasswordProvider pass, + CancellationToken cancellationToken) { var coderInfo = folderInfo._coders[coderIndex]; if (coderInfo._numOutStreams != 1) @@ -127,8 +130,8 @@ namespace SharpCompress.Compressors.LZMA } int otherCoderIndex = FindCoderIndexForOutStreamIndex(folderInfo, pairedOutIndex); - inStreams[i] = CreateDecoderStream(packStreams, packSizes, outStreams, folderInfo, otherCoderIndex, - pass); + inStreams[i] = await CreateDecoderStream(packStreams, packSizes, outStreams, folderInfo, otherCoderIndex, + pass, cancellationToken); //inStreamSizes[i] = folderInfo.UnpackSizes[pairedOutIndex]; @@ -154,11 +157,11 @@ namespace SharpCompress.Compressors.LZMA } long unpackSize = folderInfo._unpackSizes[outStreamId]; - return DecoderRegistry.CreateDecoderStream(coderInfo._methodId, inStreams, coderInfo._props, pass, unpackSize); + return await DecoderRegistry.CreateDecoderStream(coderInfo._methodId, inStreams, coderInfo._props, pass, unpackSize, cancellationToken); } - internal static Stream CreateDecoderStream(Stream inStream, long startPos, long[] packSizes, CFolder folderInfo, - IPasswordProvider pass) + internal static async ValueTask CreateDecoderStream(Stream inStream, long startPos, long[] packSizes, CFolder folderInfo, + IPasswordProvider pass, CancellationToken cancellationToken) { if (!folderInfo.CheckStructure()) { @@ -176,7 +179,7 @@ namespace SharpCompress.Compressors.LZMA int primaryCoderIndex, primaryOutStreamIndex; FindPrimaryOutStreamIndex(folderInfo, out primaryCoderIndex, out primaryOutStreamIndex); - return CreateDecoderStream(inStreams, packSizes, outStreams, folderInfo, primaryCoderIndex, pass); + return await CreateDecoderStream(inStreams, packSizes, outStreams, folderInfo, primaryCoderIndex, pass, cancellationToken); } } } \ No newline at end of file diff --git a/src/SharpCompress/Compressors/LZMA/Registry.cs b/src/SharpCompress/Compressors/LZMA/Registry.cs index 8495c4bc..9075647c 100644 --- a/src/SharpCompress/Compressors/LZMA/Registry.cs +++ b/src/SharpCompress/Compressors/LZMA/Registry.cs @@ -1,12 +1,14 @@ using System; using System.IO; using System.Linq; +using System.Threading; +using System.Threading.Tasks; using SharpCompress.Common.SevenZip; using SharpCompress.Compressors.BZip2; using SharpCompress.Compressors.Deflate; using SharpCompress.Compressors.Filters; using SharpCompress.Compressors.LZMA.Utilites; -using SharpCompress.Compressors.PPMd; +//using SharpCompress.Compressors.PPMd; namespace SharpCompress.Compressors.LZMA { @@ -22,8 +24,8 @@ namespace SharpCompress.Compressors.LZMA private const uint K_DEFLATE = 0x040108; private const uint K_B_ZIP2 = 0x040202; - internal static Stream CreateDecoderStream(CMethodId id, Stream[] inStreams, byte[] info, IPasswordProvider pass, - long limit) + internal static async ValueTask CreateDecoderStream(CMethodId id, Stream[] inStreams, byte[] info, IPasswordProvider pass, + long limit, CancellationToken cancellationToken) { switch (id._id) { @@ -43,9 +45,9 @@ namespace SharpCompress.Compressors.LZMA case K_BCJ2: return new Bcj2DecoderStream(inStreams, info, limit); case K_B_ZIP2: - return new BZip2Stream(inStreams.Single(), CompressionMode.Decompress, true); - case K_PPMD: - return new PpmdStream(new PpmdProperties(info), inStreams.Single(), false); + return await BZip2Stream.CreateAsync(inStreams.Single(), CompressionMode.Decompress, true, cancellationToken); + /*case K_PPMD: + return new PpmdStream(new PpmdProperties(info), inStreams.Single(), false);*/ case K_DEFLATE: return new DeflateStream(inStreams.Single(), CompressionMode.Decompress); default: diff --git a/src/SharpCompress/Readers/AbstractReader.cs b/src/SharpCompress/Readers/AbstractReader.cs index b30c412d..9af95659 100644 --- a/src/SharpCompress/Readers/AbstractReader.cs +++ b/src/SharpCompress/Readers/AbstractReader.cs @@ -81,7 +81,7 @@ namespace SharpCompress.Readers } if (entriesForCurrentReadStream is null) { - var stream = RequestInitialStream(); + var stream = await RequestInitialStream(cancellationToken); if (stream is null || !stream.CanRead) { throw new MultipartStreamRequiredException("File is split into multiple archives: '" @@ -103,9 +103,9 @@ namespace SharpCompress.Readers return false; } - protected virtual Stream RequestInitialStream() + protected virtual ValueTask RequestInitialStream(CancellationToken cancellationToken) { - return Volume.Stream; + return new(Volume.Stream); } protected abstract IAsyncEnumerable GetEntries(Stream stream, CancellationToken cancellationToken); diff --git a/src/SharpCompress/Readers/ReaderFactory.cs b/src/SharpCompress/Readers/ReaderFactory.cs index 45b091e6..e94c0ecc 100644 --- a/src/SharpCompress/Readers/ReaderFactory.cs +++ b/src/SharpCompress/Readers/ReaderFactory.cs @@ -60,7 +60,7 @@ namespace SharpCompress.Readers if (await BZip2Stream.IsBZip2Async(rewindableStream, cancellationToken)) { rewindableStream.Rewind(false); - BZip2Stream testStream = new(new NonDisposingStream(rewindableStream), CompressionMode.Decompress, false); + var testStream = await BZip2Stream.CreateAsync(new NonDisposingStream(rewindableStream), CompressionMode.Decompress, false, cancellationToken); if (await TarArchive.IsTarFileAsync(testStream, cancellationToken)) { rewindableStream.Rewind(true); diff --git a/src/SharpCompress/Readers/Tar/TarReader.cs b/src/SharpCompress/Readers/Tar/TarReader.cs index e32bca01..ae6203ee 100644 --- a/src/SharpCompress/Readers/Tar/TarReader.cs +++ b/src/SharpCompress/Readers/Tar/TarReader.cs @@ -29,14 +29,14 @@ namespace SharpCompress.Readers.Tar public override TarVolume Volume { get; } - protected override Stream RequestInitialStream() + protected override async ValueTask RequestInitialStream(CancellationToken cancellationToken) { - var stream = base.RequestInitialStream(); + var stream = await base.RequestInitialStream(cancellationToken); switch (compressionType) { case CompressionType.BZip2: { - return new BZip2Stream(stream, CompressionMode.Decompress, false); + return await BZip2Stream.CreateAsync(stream, CompressionMode.Decompress, false, cancellationToken); } case CompressionType.GZip: { @@ -91,7 +91,7 @@ namespace SharpCompress.Readers.Tar if (await BZip2Stream.IsBZip2Async(rewindableStream, cancellationToken)) { rewindableStream.Rewind(false); - BZip2Stream testStream = new(rewindableStream, CompressionMode.Decompress, false); + var testStream = await BZip2Stream.CreateAsync(rewindableStream, CompressionMode.Decompress, false, cancellationToken); if (await TarArchive.IsTarFileAsync(testStream, cancellationToken)) { rewindableStream.Rewind(true); diff --git a/src/SharpCompress/SharpCompress.csproj b/src/SharpCompress/SharpCompress.csproj index da6a9310..e5908d6a 100644 --- a/src/SharpCompress/SharpCompress.csproj +++ b/src/SharpCompress/SharpCompress.csproj @@ -39,15 +39,30 @@ + + + + + + + + + + + + + + + diff --git a/src/SharpCompress/Writers/Tar/TarWriter.cs b/src/SharpCompress/Writers/Tar/TarWriter.cs index 9abd1e23..9d031e73 100644 --- a/src/SharpCompress/Writers/Tar/TarWriter.cs +++ b/src/SharpCompress/Writers/Tar/TarWriter.cs @@ -15,18 +15,23 @@ namespace SharpCompress.Writers.Tar { public class TarWriter : AbstractWriter { - private readonly bool finalizeArchiveOnClose; + private bool finalizeArchiveOnClose; - public TarWriter(Stream destination, TarWriterOptions options) + private TarWriter(TarWriterOptions options) : base(ArchiveType.Tar, options) { - finalizeArchiveOnClose = options.FinalizeArchiveOnClose; + } + + public static async ValueTask CreateAsync(Stream destination, TarWriterOptions options, CancellationToken cancellationToken = default) + { + var tw = new TarWriter(options); + tw.finalizeArchiveOnClose = options.FinalizeArchiveOnClose; if (!destination.CanWrite) { throw new ArgumentException("Tars require writable streams."); } - if (WriterOptions.LeaveStreamOpen) + if (tw.WriterOptions.LeaveStreamOpen) { destination = new NonDisposingStream(destination); } @@ -36,7 +41,7 @@ namespace SharpCompress.Writers.Tar break; case CompressionType.BZip2: { - destination = new BZip2Stream(destination, CompressionMode.Compress, false); + destination = await BZip2Stream.CreateAsync(destination, CompressionMode.Compress, false, cancellationToken); } break; case CompressionType.GZip: @@ -54,7 +59,8 @@ namespace SharpCompress.Writers.Tar throw new InvalidFormatException("Tar does not support compression: " + options.CompressionType); } } - InitializeStream(destination); + tw.InitializeStream(destination); + return tw; } public override ValueTask WriteAsync(string filename, Stream source, DateTime? modificationTime, CancellationToken cancellationToken = default) @@ -118,7 +124,7 @@ namespace SharpCompress.Writers.Tar { case BZip2Stream b: { - b.Finish(); + await b.FinishAsync(CancellationToken.None); break; } case LZipStream l: diff --git a/src/SharpCompress/Writers/WriterFactory.cs b/src/SharpCompress/Writers/WriterFactory.cs index 7efa93d0..a5c814ba 100644 --- a/src/SharpCompress/Writers/WriterFactory.cs +++ b/src/SharpCompress/Writers/WriterFactory.cs @@ -1,5 +1,7 @@ using System; using System.IO; +using System.Threading; +using System.Threading.Tasks; using SharpCompress.Common; using SharpCompress.Writers.GZip; using SharpCompress.Writers.Tar; @@ -9,7 +11,7 @@ namespace SharpCompress.Writers { public static class WriterFactory { - public static IWriter Open(Stream stream, ArchiveType archiveType, WriterOptions writerOptions) + public static async ValueTask OpenAsync(Stream stream, ArchiveType archiveType, WriterOptions writerOptions, CancellationToken cancellationToken = default) { switch (archiveType) { @@ -27,7 +29,7 @@ namespace SharpCompress.Writers } case ArchiveType.Tar: { - return new TarWriter(stream, new TarWriterOptions(writerOptions)); + return await TarWriter.CreateAsync(stream, new TarWriterOptions(writerOptions), cancellationToken); } default: { diff --git a/src/SharpCompress/Writers/Zip/ZipWriter.cs b/src/SharpCompress/Writers/Zip/ZipWriter.cs index eec31143..e164f1ab 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriter.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriter.cs @@ -13,7 +13,7 @@ using SharpCompress.Compressors; using SharpCompress.Compressors.BZip2; using SharpCompress.Compressors.Deflate; using SharpCompress.Compressors.LZMA; -using SharpCompress.Compressors.PPMd; +//using SharpCompress.Compressors.PPMd; using SharpCompress.IO; namespace SharpCompress.Writers.Zip @@ -25,7 +25,7 @@ namespace SharpCompress.Writers.Zip private readonly List entries = new(); private readonly string zipComment; private long streamPosition; - private PpmdProperties? ppmdProps; + // private PpmdProperties? ppmdProps; private readonly bool isZip64; public ZipWriter(Stream destination, ZipWriterOptions zipWriterOptions) @@ -48,13 +48,13 @@ namespace SharpCompress.Writers.Zip InitializeStream(destination); } - private PpmdProperties PpmdProperties + /* private PpmdProperties PpmdProperties { get { return ppmdProps ??= new PpmdProperties(); } - } + } */ protected override async ValueTask DisposeAsyncCore() { @@ -132,8 +132,10 @@ namespace SharpCompress.Writers.Zip var headersize = (uint)(await WriteHeaderAsync(entryPath, options, entry, useZip64, cancellationToken)); streamPosition += headersize; - return new ZipWritingStream(this, OutputStream, entry, compression, + var s = new ZipWritingStream(this, OutputStream, entry, compression, options.DeflateCompressionLevel ?? compressionLevel); + await s.InitializeAsync(cancellationToken); + return s; } private string NormalizeFilename(string filename) @@ -336,7 +338,9 @@ namespace SharpCompress.Writers.Zip private readonly CRC32 crc = new CRC32(); private readonly ZipCentralDirectoryEntry entry; private readonly Stream originalStream; - private readonly Stream writeStream; +#nullable disable + private Stream writeStream; +#nullable enable private readonly ZipWriter writer; private readonly ZipCompressionMethod zipCompressionMethod; private readonly CompressionLevel compressionLevel; @@ -356,7 +360,11 @@ namespace SharpCompress.Writers.Zip this.entry = entry; this.zipCompressionMethod = zipCompressionMethod; this.compressionLevel = compressionLevel; - writeStream = GetWriteStream(originalStream); + } + + public async ValueTask InitializeAsync(CancellationToken cancellationToken) + { + writeStream = await GetWriteStream(originalStream, cancellationToken); } public override bool CanRead => false; @@ -369,7 +377,7 @@ namespace SharpCompress.Writers.Zip public override long Position { get => throw new NotSupportedException(); set => throw new NotSupportedException(); } - private Stream GetWriteStream(Stream writeStream) + private async ValueTask GetWriteStream(Stream writeStream, CancellationToken cancellationToken) { counting = new CountingWritableSubStream(writeStream); Stream output = counting; @@ -385,7 +393,7 @@ namespace SharpCompress.Writers.Zip } case ZipCompressionMethod.BZip2: { - return new BZip2Stream(counting, CompressionMode.Compress, false); + return await BZip2Stream.CreateAsync(counting, CompressionMode.Compress, false, cancellationToken); } case ZipCompressionMethod.LZMA: { @@ -399,11 +407,11 @@ namespace SharpCompress.Writers.Zip counting.Write(lzmaStream.Properties, 0, lzmaStream.Properties.Length); return lzmaStream; } - case ZipCompressionMethod.PPMd: + /* case ZipCompressionMethod.PPMd: { counting.Write(writer.PpmdProperties.Properties, 0, 2); return new PpmdStream(writer.PpmdProperties, counting, true); - } + } */ default: { throw new NotSupportedException("CompressionMethod: " + zipCompressionMethod); diff --git a/tests/SharpCompress.Test/GZip/GZipWriterTests.cs b/tests/SharpCompress.Test/GZip/GZipWriterTests.cs index 44cd9e7e..a47e508e 100644 --- a/tests/SharpCompress.Test/GZip/GZipWriterTests.cs +++ b/tests/SharpCompress.Test/GZip/GZipWriterTests.cs @@ -19,7 +19,7 @@ namespace SharpCompress.Test.GZip public async Task GZip_Writer_Generic() { await using (Stream stream = File.Open(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz"), FileMode.OpenOrCreate, FileAccess.Write)) - await using (var writer = WriterFactory.Open(stream, ArchiveType.GZip, CompressionType.GZip)) + await using (var writer = await WriterFactory.OpenAsync(stream, ArchiveType.GZip, CompressionType.GZip)) { await writer.WriteAsync("Tar.tar", Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar")); } @@ -45,7 +45,7 @@ namespace SharpCompress.Test.GZip await Assert.ThrowsAsync(async () => { await using (Stream stream = File.OpenWrite(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz"))) - await using (var writer = WriterFactory.Open(stream, ArchiveType.GZip, CompressionType.BZip2)) + await using (var writer = await WriterFactory.OpenAsync(stream, ArchiveType.GZip, CompressionType.BZip2)) { } }); diff --git a/tests/SharpCompress.Test/Tar/TarArchiveTests.cs b/tests/SharpCompress.Test/Tar/TarArchiveTests.cs index f54a7329..d4115b24 100644 --- a/tests/SharpCompress.Test/Tar/TarArchiveTests.cs +++ b/tests/SharpCompress.Test/Tar/TarArchiveTests.cs @@ -44,7 +44,7 @@ namespace SharpCompress.Test.Tar // Step 1: create a tar file containing a file with the test name await using (Stream stream = File.OpenWrite(Path.Combine(SCRATCH2_FILES_PATH, archive))) - await using (var writer = WriterFactory.Open(stream, ArchiveType.Tar, CompressionType.None)) + await using (var writer = await WriterFactory.OpenAsync(stream, ArchiveType.Tar, CompressionType.None)) await using (Stream inputStream = new MemoryStream()) { StreamWriter sw = new StreamWriter(inputStream); @@ -99,7 +99,7 @@ namespace SharpCompress.Test.Tar // Step 1: create a tar file containing a file with a long name await using (Stream stream = File.OpenWrite(Path.Combine(SCRATCH2_FILES_PATH, archive))) - await using (var writer = WriterFactory.Open(stream, ArchiveType.Tar, CompressionType.None)) + await using (var writer = await WriterFactory.OpenAsync(stream, ArchiveType.Tar, CompressionType.None)) await using (Stream inputStream = new MemoryStream()) { StreamWriter sw = new StreamWriter(inputStream); @@ -220,7 +220,7 @@ namespace SharpCompress.Test.Tar var twopt = new TarWriterOptions(CompressionType.None, true); twopt.ArchiveEncoding = enc; var fname = new string((char)0x3042, length); - await using (var tw = new TarWriter(mstm, twopt)) + await using (var tw = await TarWriter.CreateAsync(mstm, twopt)) await using (var input = new MemoryStream(new byte[32])) { await tw.WriteAsync(fname, input, null); @@ -250,7 +250,7 @@ namespace SharpCompress.Test.Tar var testBytes = Encoding.UTF8.GetBytes("This is a test."); await using var memoryStream = new MemoryStream(); - await using (var tarWriter = new TarWriter(memoryStream, tarWriterOptions)) + await using (var tarWriter = await TarWriter.CreateAsync(memoryStream, tarWriterOptions)) await using (var testFileStream = new MemoryStream(testBytes)) { await tarWriter.WriteAsync("test1.txt", testFileStream); diff --git a/tests/SharpCompress.Test/Tar/TarWriterTests.cs b/tests/SharpCompress.Test/Tar/TarWriterTests.cs index c4a55dc8..97c07cc1 100644 --- a/tests/SharpCompress.Test/Tar/TarWriterTests.cs +++ b/tests/SharpCompress.Test/Tar/TarWriterTests.cs @@ -47,7 +47,7 @@ namespace SharpCompress.Test.Tar using (MemoryStream stream = new MemoryStream()) using (Stream content = File.OpenRead(Path.Combine(ORIGINAL_FILES_PATH, "jpg", "test.jpg"))) { - await using (TarWriter writer = new TarWriter(stream, new TarWriterOptions(CompressionType.None, finalizeArchive))) + await using (TarWriter writer = await TarWriter.CreateAsync(stream, new TarWriterOptions(CompressionType.None, finalizeArchive))) { await writer.WriteAsync("doesn't matter", content, null); } diff --git a/tests/SharpCompress.Test/WriterTests.cs b/tests/SharpCompress.Test/WriterTests.cs index ae1e43d7..64f06a72 100644 --- a/tests/SharpCompress.Test/WriterTests.cs +++ b/tests/SharpCompress.Test/WriterTests.cs @@ -28,7 +28,7 @@ namespace SharpCompress.Test writerOptions.ArchiveEncoding.Default = encoding ?? Encoding.Default; - await using (var writer = WriterFactory.Open(stream, type, writerOptions)) + await using (var writer = await WriterFactory.OpenAsync(stream, type, writerOptions)) { await writer.WriteAllAsync(ORIGINAL_FILES_PATH, "*", SearchOption.AllDirectories); } diff --git a/tests/SharpCompress.Test/Zip/Zip64Tests.cs b/tests/SharpCompress.Test/Zip/Zip64Tests.cs index 55a7756f..96468713 100644 --- a/tests/SharpCompress.Test/Zip/Zip64Tests.cs +++ b/tests/SharpCompress.Test/Zip/Zip64Tests.cs @@ -149,7 +149,7 @@ namespace SharpCompress.Test.Zip using (var zip = File.OpenWrite(filename)) using (var st = forward_only ? (Stream)new ForwardOnlyStream(zip) : zip) - await using (var zipWriter = (ZipWriter)WriterFactory.Open(st, ArchiveType.Zip, opts)) + await using (var zipWriter = (ZipWriter)await WriterFactory.OpenAsync(st, ArchiveType.Zip, opts)) { for (var i = 0; i < files; i++) diff --git a/tests/SharpCompress.Test/Zip/ZipArchiveTests.cs b/tests/SharpCompress.Test/Zip/ZipArchiveTests.cs index 75df57a8..4901e645 100644 --- a/tests/SharpCompress.Test/Zip/ZipArchiveTests.cs +++ b/tests/SharpCompress.Test/Zip/ZipArchiveTests.cs @@ -488,7 +488,7 @@ namespace SharpCompress.Test.Zip { MemoryStream stream = new NonSeekableMemoryStream(); - await using (IWriter zipWriter = WriterFactory.Open(stream, ArchiveType.Zip, CompressionType.Deflate)) + await using (IWriter zipWriter = await WriterFactory.OpenAsync(stream, ArchiveType.Zip, CompressionType.Deflate)) { await zipWriter.WriteAsync("foo.txt", new MemoryStream(new byte[0])); await zipWriter.WriteAsync("foo2.txt", new MemoryStream(new byte[10])); diff --git a/tests/SharpCompress.Test/Zip/ZipReaderTests.cs b/tests/SharpCompress.Test/Zip/ZipReaderTests.cs index 3631a5f6..59f3a67c 100644 --- a/tests/SharpCompress.Test/Zip/ZipReaderTests.cs +++ b/tests/SharpCompress.Test/Zip/ZipReaderTests.cs @@ -284,7 +284,7 @@ namespace SharpCompress.Test.Zip { Stream stream = new TestStream(memory, read: true, write: true, seek: false); - await using (IWriter zipWriter = WriterFactory.Open(stream, ArchiveType.Zip, CompressionType.Deflate)) + await using (IWriter zipWriter = await WriterFactory.OpenAsync(stream, ArchiveType.Zip, CompressionType.Deflate)) { await zipWriter.WriteAsync(expected[0].Item1, new MemoryStream(expected[0].Item2)); await zipWriter.WriteAsync(expected[1].Item1, new MemoryStream(expected[1].Item2));