mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-24 16:05:27 +00:00
create async
This commit is contained in:
@@ -184,7 +184,7 @@ namespace SharpCompress.Archives.Tar
|
||||
IAsyncEnumerable<TarArchiveEntry> 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))
|
||||
|
||||
@@ -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<byte[]> ReadAndDecodePackedStreams(long baseOffset, IPasswordProvider pass)
|
||||
private async ValueTask<List<byte[]>> 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<byte[]> dataVector = null;
|
||||
if (type == BlockType.AdditionalStreamsInfo)
|
||||
{
|
||||
dataVector = ReadAndDecodePackedStreams(db._startPositionAfterHeader, getTextPassword);
|
||||
dataVector = await ReadAndDecodePackedStreams(db._startPositionAfterHeader, getTextPassword, cancellationToken);
|
||||
type = ReadId();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<Stream> 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<Stream> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<Stream> 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:
|
||||
|
||||
@@ -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<Stream> RequestInitialStream(CancellationToken cancellationToken)
|
||||
{
|
||||
return Volume.Stream;
|
||||
return new(Volume.Stream);
|
||||
}
|
||||
|
||||
protected abstract IAsyncEnumerable<TEntry> GetEntries(Stream stream, CancellationToken cancellationToken);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -29,14 +29,14 @@ namespace SharpCompress.Readers.Tar
|
||||
|
||||
public override TarVolume Volume { get; }
|
||||
|
||||
protected override Stream RequestInitialStream()
|
||||
protected override async ValueTask<Stream> 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);
|
||||
|
||||
@@ -39,15 +39,30 @@
|
||||
<Compile Remove="Archives\SevenZip\**" />
|
||||
<Compile Remove="Archives\Rar\**" />
|
||||
<Compile Remove="Readers\Rar\**" />
|
||||
<Compile Remove="Common\Rar\**" />
|
||||
<Compile Remove="Common\SevenZip\ArchiveDatabase.cs" />
|
||||
<Compile Remove="Common\SevenZip\ArchiveReader.cs" />
|
||||
<Compile Remove="Common\SevenZip\CStreamSwitch.cs" />
|
||||
<Compile Remove="Common\SevenZip\SevenZipEntry.cs" />
|
||||
<Compile Remove="Common\SevenZip\SevenZipFilePart.cs" />
|
||||
<Compile Remove="Common\SevenZip\SevenZipVolume.cs" />
|
||||
<Compile Remove="Compressors\Rar\**" />
|
||||
<Compile Remove="Compressors\PPMd\**" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Remove="Archives\SevenZip\**" />
|
||||
<EmbeddedResource Remove="Readers\Rar\**" />
|
||||
<EmbeddedResource Remove="Common\Rar\**" />
|
||||
<EmbeddedResource Remove="Compressors\Rar\**" />
|
||||
<EmbeddedResource Remove="Compressors\PPMd\**" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Remove="Archives\SevenZip\**" />
|
||||
<None Remove="Archives\Rar\**" />
|
||||
<None Remove="Readers\Rar\**" />
|
||||
<None Remove="Common\Rar\**" />
|
||||
<None Remove="Compressors\Rar\**" />
|
||||
<None Remove="Compressors\PPMd\**" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -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<TarWriter> 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:
|
||||
|
||||
@@ -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<IWriter> 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:
|
||||
{
|
||||
|
||||
@@ -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<ZipCentralDirectoryEntry> 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<Stream> 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);
|
||||
|
||||
@@ -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<InvalidFormatException>(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))
|
||||
{
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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++)
|
||||
|
||||
@@ -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]));
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user