diff --git a/src/SharpCompress/Archives/ArchiveFactory.cs b/src/SharpCompress/Archives/ArchiveFactory.cs
index e052c3e8..17a7f463 100644
--- a/src/SharpCompress/Archives/ArchiveFactory.cs
+++ b/src/SharpCompress/Archives/ArchiveFactory.cs
@@ -33,7 +33,7 @@ public static class ArchiveFactory
///
///
///
- public static async ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
@@ -41,11 +41,8 @@ public static class ArchiveFactory
{
readerOptions ??= new ReaderOptions();
stream = SharpCompressStream.Create(stream, bufferSize: readerOptions.BufferSize);
- var factory = await FindFactoryAsync(stream, cancellationToken)
- .ConfigureAwait(false);
- return await factory
- .OpenAsync(stream, readerOptions, cancellationToken)
- .ConfigureAwait(false);
+ var factory = FindFactory(stream);
+ return factory.OpenAsync(stream, readerOptions, cancellationToken);
}
public static IWritableArchive Create(ArchiveType type)
@@ -79,7 +76,7 @@ public static class ArchiveFactory
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
string filePath,
ReaderOptions? options = null,
CancellationToken cancellationToken = default
@@ -107,7 +104,7 @@ public static class ArchiveFactory
///
///
///
- public static async ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? options = null,
CancellationToken cancellationToken = default
@@ -115,9 +112,8 @@ public static class ArchiveFactory
{
options ??= new ReaderOptions { LeaveStreamOpen = false };
- var factory = await FindFactoryAsync(fileInfo, cancellationToken)
- .ConfigureAwait(false);
- return await factory.OpenAsync(fileInfo, options, cancellationToken).ConfigureAwait(false);
+ var factory = FindFactory(fileInfo);
+ return factory.OpenAsync(fileInfo, options, cancellationToken);
}
///
@@ -152,7 +148,7 @@ public static class ArchiveFactory
///
///
///
- public static async ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IEnumerable fileInfos,
ReaderOptions? options = null,
CancellationToken cancellationToken = default
@@ -168,16 +164,14 @@ public static class ArchiveFactory
var fileInfo = filesArray[0];
if (filesArray.Length == 1)
{
- return await OpenAsync(fileInfo, options, cancellationToken).ConfigureAwait(false);
+ return OpenAsync(fileInfo, options, cancellationToken);
}
fileInfo.NotNull(nameof(fileInfo));
options ??= new ReaderOptions { LeaveStreamOpen = false };
var factory = FindFactory(fileInfo);
- return await factory
- .OpenAsync(filesArray, options, cancellationToken)
- .ConfigureAwait(false);
+ return factory.OpenAsync(filesArray, options, cancellationToken);
}
///
@@ -212,7 +206,7 @@ public static class ArchiveFactory
///
///
///
- public static async ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IEnumerable streams,
ReaderOptions? options = null,
CancellationToken cancellationToken = default
@@ -229,16 +223,14 @@ public static class ArchiveFactory
var firstStream = streamsArray[0];
if (streamsArray.Length == 1)
{
- return await OpenAsync(firstStream, options, cancellationToken).ConfigureAwait(false);
+ return OpenAsync(firstStream, options, cancellationToken);
}
firstStream.NotNull(nameof(firstStream));
options ??= new ReaderOptions();
var factory = FindFactory(firstStream);
- return await factory
- .OpenAsync(streamsArray, options, cancellationToken)
- .ConfigureAwait(false);
+ return factory.OpenAsync(streamsArray, options, cancellationToken);
}
///
diff --git a/src/SharpCompress/Archives/AutoArchiveFactory.cs b/src/SharpCompress/Archives/AutoArchiveFactory.cs
index 7751c7e0..a6d3855e 100644
--- a/src/SharpCompress/Archives/AutoArchiveFactory.cs
+++ b/src/SharpCompress/Archives/AutoArchiveFactory.cs
@@ -34,18 +34,22 @@ internal class AutoArchiveFactory : IArchiveFactory
public IArchive Open(Stream stream, ReaderOptions? readerOptions = null) =>
ArchiveFactory.Open(stream, readerOptions);
- public async ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => await ArchiveFactory.OpenAsync(stream, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(stream, readerOptions);
public IArchive Open(FileInfo fileInfo, ReaderOptions? readerOptions = null) =>
ArchiveFactory.Open(fileInfo, readerOptions);
- public async ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => await ArchiveFactory.OpenAsync(fileInfo, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
+ }
}
diff --git a/src/SharpCompress/Archives/GZip/GZipArchive.cs b/src/SharpCompress/Archives/GZip/GZipArchive.cs
index 6214c301..82ea7f67 100644
--- a/src/SharpCompress/Archives/GZip/GZipArchive.cs
+++ b/src/SharpCompress/Archives/GZip/GZipArchive.cs
@@ -108,14 +108,14 @@ public class GZipArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(stream, readerOptions));
+ return (IAsyncArchive)Open(stream, readerOptions);
}
///
@@ -124,14 +124,14 @@ public class GZipArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfo, readerOptions));
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
}
///
@@ -140,14 +140,14 @@ public class GZipArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(streams, readerOptions));
+ return (IAsyncArchive)Open(streams, readerOptions);
}
///
@@ -156,14 +156,14 @@ public class GZipArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfos, readerOptions));
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
}
public static GZipArchive Create() => new();
diff --git a/src/SharpCompress/Archives/IArchiveFactory.cs b/src/SharpCompress/Archives/IArchiveFactory.cs
index 1c1253f6..06ea7360 100644
--- a/src/SharpCompress/Archives/IArchiveFactory.cs
+++ b/src/SharpCompress/Archives/IArchiveFactory.cs
@@ -1,6 +1,5 @@
using System.IO;
using System.Threading;
-using System.Threading.Tasks;
using SharpCompress.Factories;
using SharpCompress.Readers;
@@ -34,7 +33,7 @@ public interface IArchiveFactory : IFactory
/// An open, readable and seekable stream.
/// reading options.
/// Cancellation token.
- ValueTask OpenAsync(
+ IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
@@ -53,7 +52,7 @@ public interface IArchiveFactory : IFactory
/// the file to open.
/// reading options.
/// Cancellation token.
- ValueTask OpenAsync(
+ IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
diff --git a/src/SharpCompress/Archives/IMultiArchiveFactory.cs b/src/SharpCompress/Archives/IMultiArchiveFactory.cs
index 4fa94d7f..b54b32ec 100644
--- a/src/SharpCompress/Archives/IMultiArchiveFactory.cs
+++ b/src/SharpCompress/Archives/IMultiArchiveFactory.cs
@@ -1,7 +1,6 @@
using System.Collections.Generic;
using System.IO;
using System.Threading;
-using System.Threading.Tasks;
using SharpCompress.Factories;
using SharpCompress.Readers;
@@ -35,7 +34,7 @@ public interface IMultiArchiveFactory : IFactory
///
/// reading options.
/// Cancellation token.
- ValueTask OpenAsync(
+ IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
@@ -54,7 +53,7 @@ public interface IMultiArchiveFactory : IFactory
///
/// reading options.
/// Cancellation token.
- ValueTask OpenAsync(
+ IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
diff --git a/src/SharpCompress/Archives/Rar/RarArchive.cs b/src/SharpCompress/Archives/Rar/RarArchive.cs
index 374755af..1cb7b00a 100644
--- a/src/SharpCompress/Archives/Rar/RarArchive.cs
+++ b/src/SharpCompress/Archives/Rar/RarArchive.cs
@@ -195,14 +195,14 @@ public class RarArchive : AbstractArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(stream, readerOptions));
+ return (IAsyncArchive)Open(stream, readerOptions);
}
///
@@ -211,14 +211,14 @@ public class RarArchive : AbstractArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfo, readerOptions));
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
}
///
@@ -227,14 +227,14 @@ public class RarArchive : AbstractArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(streams, readerOptions));
+ return (IAsyncArchive)Open(streams, readerOptions);
}
///
@@ -243,14 +243,14 @@ public class RarArchive : AbstractArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfos, readerOptions));
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
}
public static bool IsRarFile(string filePath) => IsRarFile(new FileInfo(filePath));
diff --git a/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs b/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs
index 5b606327..8532e837 100644
--- a/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs
+++ b/src/SharpCompress/Archives/SevenZip/SevenZipArchive.cs
@@ -108,14 +108,14 @@ public class SevenZipArchive : AbstractArchive
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(stream, readerOptions));
+ return (IAsyncArchive)Open(stream, readerOptions);
}
///
@@ -124,14 +124,14 @@ public class SevenZipArchive : AbstractArchive
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfo, readerOptions));
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
}
///
@@ -140,14 +140,14 @@ public class SevenZipArchive : AbstractArchive
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(streams, readerOptions));
+ return (IAsyncArchive)Open(streams, readerOptions);
}
///
@@ -156,14 +156,14 @@ public class SevenZipArchive : AbstractArchive
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfos, readerOptions));
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
}
///
diff --git a/src/SharpCompress/Archives/Tar/TarArchive.cs b/src/SharpCompress/Archives/Tar/TarArchive.cs
index fe5298b1..76d47d0b 100644
--- a/src/SharpCompress/Archives/Tar/TarArchive.cs
+++ b/src/SharpCompress/Archives/Tar/TarArchive.cs
@@ -109,14 +109,14 @@ public class TarArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(stream, readerOptions));
+ return (IAsyncArchive)Open(stream, readerOptions);
}
///
@@ -125,14 +125,14 @@ public class TarArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfo, readerOptions));
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
}
///
@@ -141,14 +141,14 @@ public class TarArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(streams, readerOptions));
+ return (IAsyncArchive)Open(streams, readerOptions);
}
///
@@ -157,14 +157,14 @@ public class TarArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfos, readerOptions));
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
}
public static bool IsTarFile(string filePath) => IsTarFile(new FileInfo(filePath));
diff --git a/src/SharpCompress/Archives/Zip/ZipArchive.cs b/src/SharpCompress/Archives/Zip/ZipArchive.cs
index e7bb2466..9a0fbac5 100644
--- a/src/SharpCompress/Archives/Zip/ZipArchive.cs
+++ b/src/SharpCompress/Archives/Zip/ZipArchive.cs
@@ -124,14 +124,14 @@ public class ZipArchive : AbstractWritableArchive
);
}
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
string path,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(path, readerOptions));
+ return (IAsyncArchive)Open(path, readerOptions);
}
///
@@ -140,14 +140,14 @@ public class ZipArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(stream, readerOptions));
+ return (IAsyncArchive)Open(stream, readerOptions);
}
///
@@ -156,14 +156,14 @@ public class ZipArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfo, readerOptions));
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
}
///
@@ -172,14 +172,14 @@ public class ZipArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(streams, readerOptions));
+ return (IAsyncArchive)Open(streams, readerOptions);
}
///
@@ -188,14 +188,14 @@ public class ZipArchive : AbstractWritableArchive
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncArchive)Open(fileInfos, readerOptions));
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
}
public static bool IsZipFile(
diff --git a/src/SharpCompress/Factories/AceFactory.cs b/src/SharpCompress/Factories/AceFactory.cs
index eb896b54..82ebe82e 100644
--- a/src/SharpCompress/Factories/AceFactory.cs
+++ b/src/SharpCompress/Factories/AceFactory.cs
@@ -32,11 +32,15 @@ namespace SharpCompress.Factories
public IReader OpenReader(Stream stream, ReaderOptions? options) =>
AceReader.Open(stream, options);
- public ValueTask OpenReaderAsync(
+ public IAsyncReader OpenReaderAsync(
Stream stream,
ReaderOptions? options,
CancellationToken cancellationToken = default
- ) => new((IAsyncReader)AceReader.Open(stream, options));
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncReader)AceReader.Open(stream, options);
+ }
public override ValueTask IsArchiveAsync(
Stream stream,
diff --git a/src/SharpCompress/Factories/ArcFactory.cs b/src/SharpCompress/Factories/ArcFactory.cs
index a337798a..acd361c8 100644
--- a/src/SharpCompress/Factories/ArcFactory.cs
+++ b/src/SharpCompress/Factories/ArcFactory.cs
@@ -44,11 +44,15 @@ namespace SharpCompress.Factories
public IReader OpenReader(Stream stream, ReaderOptions? options) =>
ArcReader.Open(stream, options);
- public ValueTask OpenReaderAsync(
+ public IAsyncReader OpenReaderAsync(
Stream stream,
ReaderOptions? options,
CancellationToken cancellationToken = default
- ) => new((IAsyncReader)ArcReader.Open(stream, options));
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncReader)ArcReader.Open(stream, options);
+ }
public override ValueTask IsArchiveAsync(
Stream stream,
diff --git a/src/SharpCompress/Factories/ArjFactory.cs b/src/SharpCompress/Factories/ArjFactory.cs
index dce8bd94..245fea5f 100644
--- a/src/SharpCompress/Factories/ArjFactory.cs
+++ b/src/SharpCompress/Factories/ArjFactory.cs
@@ -35,11 +35,15 @@ namespace SharpCompress.Factories
public IReader OpenReader(Stream stream, ReaderOptions? options) =>
ArjReader.Open(stream, options);
- public ValueTask OpenReaderAsync(
+ public IAsyncReader OpenReaderAsync(
Stream stream,
ReaderOptions? options,
CancellationToken cancellationToken = default
- ) => new((IAsyncReader)ArjReader.Open(stream, options));
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncReader)ArjReader.Open(stream, options);
+ }
public override ValueTask IsArchiveAsync(
Stream stream,
diff --git a/src/SharpCompress/Factories/Factory.cs b/src/SharpCompress/Factories/Factory.cs
index f28f3d24..a77eec2e 100644
--- a/src/SharpCompress/Factories/Factory.cs
+++ b/src/SharpCompress/Factories/Factory.cs
@@ -133,10 +133,7 @@ public abstract class Factory : IFactory
)
{
((IStreamStack)stream).StackSeek(pos);
- return (
- true,
- await readerFactory.OpenReaderAsync(stream, options, cancellationToken)
- );
+ return (true, readerFactory.OpenReaderAsync(stream, options, cancellationToken));
}
}
diff --git a/src/SharpCompress/Factories/GZipFactory.cs b/src/SharpCompress/Factories/GZipFactory.cs
index 5707e7eb..dd36a78c 100644
--- a/src/SharpCompress/Factories/GZipFactory.cs
+++ b/src/SharpCompress/Factories/GZipFactory.cs
@@ -65,11 +65,11 @@ public class GZipFactory
GZipArchive.Open(stream, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => GZipArchive.OpenAsync(stream, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(stream, readerOptions);
public override ValueTask IsArchiveAsync(
Stream stream,
@@ -78,15 +78,15 @@ public class GZipFactory
) => new(IsArchive(stream, password, bufferSize));
///
- public IArchive Open(FileInfo fileInfo, ReaderOptions? readerOptions = null) =>
- GZipArchive.Open(fileInfo, readerOptions);
-
- ///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => GZipArchive.OpenAsync(fileInfo, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
+ }
#endregion
@@ -97,22 +97,26 @@ public class GZipFactory
GZipArchive.Open(streams, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => GZipArchive.OpenAsync(streams, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(streams, readerOptions);
///
public IArchive Open(IReadOnlyList fileInfos, ReaderOptions? readerOptions = null) =>
GZipArchive.Open(fileInfos, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => GZipArchive.OpenAsync(fileInfos, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
+ }
#endregion
@@ -153,16 +157,20 @@ public class GZipFactory
GZipReader.Open(stream, options);
///
- public ValueTask OpenReaderAsync(
+ public IAsyncReader OpenReaderAsync(
Stream stream,
ReaderOptions? options,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncReader)GZipReader.Open(stream, options));
+ return (IAsyncReader)GZipReader.Open(stream, options);
}
+ ///
+ public IArchive Open(FileInfo fileInfo, ReaderOptions? readerOptions = null) =>
+ GZipArchive.Open(fileInfo, readerOptions);
+
#endregion
#region IWriterFactory
@@ -178,14 +186,18 @@ public class GZipFactory
}
///
- public ValueTask OpenAsync(
+ public IWriter OpenAsync(
Stream stream,
WriterOptions writerOptions,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new(Open(stream, writerOptions));
+ if (writerOptions.CompressionType != CompressionType.GZip)
+ {
+ throw new InvalidFormatException("GZip archives only support GZip compression type.");
+ }
+ return Open(stream, writerOptions);
}
#endregion
diff --git a/src/SharpCompress/Factories/RarFactory.cs b/src/SharpCompress/Factories/RarFactory.cs
index 97e7dd4a..841cc7ff 100644
--- a/src/SharpCompress/Factories/RarFactory.cs
+++ b/src/SharpCompress/Factories/RarFactory.cs
@@ -50,22 +50,26 @@ public class RarFactory : Factory, IArchiveFactory, IMultiArchiveFactory, IReade
RarArchive.Open(stream, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => RarArchive.OpenAsync(stream, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(stream, readerOptions);
///
public IArchive Open(FileInfo fileInfo, ReaderOptions? readerOptions = null) =>
RarArchive.Open(fileInfo, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => RarArchive.OpenAsync(fileInfo, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
+ }
public override ValueTask IsArchiveAsync(
Stream stream,
@@ -82,22 +86,26 @@ public class RarFactory : Factory, IArchiveFactory, IMultiArchiveFactory, IReade
RarArchive.Open(streams, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => RarArchive.OpenAsync(streams, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(streams, readerOptions);
///
public IArchive Open(IReadOnlyList fileInfos, ReaderOptions? readerOptions = null) =>
RarArchive.Open(fileInfos, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => RarArchive.OpenAsync(fileInfos, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
+ }
#endregion
@@ -108,14 +116,14 @@ public class RarFactory : Factory, IArchiveFactory, IMultiArchiveFactory, IReade
RarReader.Open(stream, options);
///
- public ValueTask OpenReaderAsync(
+ public IAsyncReader OpenReaderAsync(
Stream stream,
ReaderOptions? options,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncReader)RarReader.Open(stream, options));
+ return (IAsyncReader)RarReader.Open(stream, options);
}
#endregion
diff --git a/src/SharpCompress/Factories/SevenZipFactory.cs b/src/SharpCompress/Factories/SevenZipFactory.cs
index c387e3b3..bb4e1093 100644
--- a/src/SharpCompress/Factories/SevenZipFactory.cs
+++ b/src/SharpCompress/Factories/SevenZipFactory.cs
@@ -45,22 +45,26 @@ public class SevenZipFactory : Factory, IArchiveFactory, IMultiArchiveFactory
SevenZipArchive.Open(stream, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => SevenZipArchive.OpenAsync(stream, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(stream, readerOptions);
///
public IArchive Open(FileInfo fileInfo, ReaderOptions? readerOptions = null) =>
SevenZipArchive.Open(fileInfo, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => SevenZipArchive.OpenAsync(fileInfo, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
+ }
public override ValueTask IsArchiveAsync(
Stream stream,
@@ -77,22 +81,26 @@ public class SevenZipFactory : Factory, IArchiveFactory, IMultiArchiveFactory
SevenZipArchive.Open(streams, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => SevenZipArchive.OpenAsync(streams, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(streams, readerOptions);
///
public IArchive Open(IReadOnlyList fileInfos, ReaderOptions? readerOptions = null) =>
SevenZipArchive.Open(fileInfos, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => SevenZipArchive.OpenAsync(fileInfos, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
+ }
#endregion
diff --git a/src/SharpCompress/Factories/TarFactory.cs b/src/SharpCompress/Factories/TarFactory.cs
index 59608cf5..0b8038af 100644
--- a/src/SharpCompress/Factories/TarFactory.cs
+++ b/src/SharpCompress/Factories/TarFactory.cs
@@ -76,22 +76,26 @@ public class TarFactory
TarArchive.Open(stream, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => TarArchive.OpenAsync(stream, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(stream, readerOptions);
///
public IArchive Open(FileInfo fileInfo, ReaderOptions? readerOptions = null) =>
TarArchive.Open(fileInfo, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => TarArchive.OpenAsync(fileInfo, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
+ }
#endregion
@@ -102,22 +106,26 @@ public class TarFactory
TarArchive.Open(streams, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => TarArchive.OpenAsync(streams, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(streams, readerOptions);
///
public IArchive Open(IReadOnlyList fileInfos, ReaderOptions? readerOptions = null) =>
TarArchive.Open(fileInfos, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => TarArchive.OpenAsync(fileInfos, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
+ }
#endregion
@@ -271,14 +279,14 @@ public class TarFactory
TarReader.Open(stream, options);
///
- public ValueTask OpenReaderAsync(
+ public IAsyncReader OpenReaderAsync(
Stream stream,
ReaderOptions? options,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncReader)TarReader.Open(stream, options));
+ return (IAsyncReader)TarReader.Open(stream, options);
}
#endregion
@@ -290,14 +298,14 @@ public class TarFactory
new TarWriter(stream, new TarWriterOptions(writerOptions));
///
- public ValueTask OpenAsync(
+ public IWriter OpenAsync(
Stream stream,
WriterOptions writerOptions,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new(Open(stream, writerOptions));
+ return Open(stream, writerOptions);
}
#endregion
diff --git a/src/SharpCompress/Factories/ZipFactory.cs b/src/SharpCompress/Factories/ZipFactory.cs
index 25465351..42047ca4 100644
--- a/src/SharpCompress/Factories/ZipFactory.cs
+++ b/src/SharpCompress/Factories/ZipFactory.cs
@@ -143,22 +143,26 @@ public class ZipFactory
ZipArchive.Open(stream, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
Stream stream,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => ZipArchive.OpenAsync(stream, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(stream, readerOptions);
///
public IArchive Open(FileInfo fileInfo, ReaderOptions? readerOptions = null) =>
ZipArchive.Open(fileInfo, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
FileInfo fileInfo,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => ZipArchive.OpenAsync(fileInfo, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfo, readerOptions);
+ }
#endregion
@@ -169,22 +173,26 @@ public class ZipFactory
ZipArchive.Open(streams, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList streams,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => ZipArchive.OpenAsync(streams, readerOptions, cancellationToken);
+ ) => (IAsyncArchive)Open(streams, readerOptions);
///
public IArchive Open(IReadOnlyList fileInfos, ReaderOptions? readerOptions = null) =>
ZipArchive.Open(fileInfos, readerOptions);
///
- public ValueTask OpenAsync(
+ public IAsyncArchive OpenAsync(
IReadOnlyList fileInfos,
ReaderOptions? readerOptions = null,
CancellationToken cancellationToken = default
- ) => ZipArchive.OpenAsync(fileInfos, readerOptions, cancellationToken);
+ )
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ return (IAsyncArchive)Open(fileInfos, readerOptions);
+ }
#endregion
@@ -195,14 +203,14 @@ public class ZipFactory
ZipReader.Open(stream, options);
///
- public ValueTask OpenReaderAsync(
+ public IAsyncReader OpenReaderAsync(
Stream stream,
ReaderOptions? options,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new((IAsyncReader)ZipReader.Open(stream, options));
+ return (IAsyncReader)ZipReader.Open(stream, options);
}
#endregion
@@ -214,14 +222,14 @@ public class ZipFactory
new ZipWriter(stream, new ZipWriterOptions(writerOptions));
///
- public ValueTask OpenAsync(
+ public IWriter OpenAsync(
Stream stream,
WriterOptions writerOptions,
CancellationToken cancellationToken = default
)
{
cancellationToken.ThrowIfCancellationRequested();
- return new(Open(stream, writerOptions));
+ return Open(stream, writerOptions);
}
#endregion
diff --git a/src/SharpCompress/Polyfills/AsyncEnumerableExtensions.cs b/src/SharpCompress/Polyfills/AsyncEnumerableExtensions.cs
index c5b1d57c..aedc1d28 100644
--- a/src/SharpCompress/Polyfills/AsyncEnumerableExtensions.cs
+++ b/src/SharpCompress/Polyfills/AsyncEnumerableExtensions.cs
@@ -84,7 +84,6 @@ public static class AsyncEnumerableExtensions
throw new InvalidOperationException("The source sequence is empty."); // Throws if the stream is empty
}
-
public async ValueTask FirstOrDefaultAsync()
{
await foreach (var item in source)
diff --git a/src/SharpCompress/Readers/IReaderFactory.cs b/src/SharpCompress/Readers/IReaderFactory.cs
index 4757644b..ca38b2ba 100644
--- a/src/SharpCompress/Readers/IReaderFactory.cs
+++ b/src/SharpCompress/Readers/IReaderFactory.cs
@@ -1,6 +1,5 @@
using System.IO;
using System.Threading;
-using System.Threading.Tasks;
namespace SharpCompress.Readers;
@@ -13,7 +12,7 @@ public interface IReaderFactory : Factories.IFactory
///
///
IReader OpenReader(Stream stream, ReaderOptions? options);
- ValueTask OpenReaderAsync(
+ IAsyncReader OpenReaderAsync(
Stream stream,
ReaderOptions? options,
CancellationToken cancellationToken
diff --git a/src/SharpCompress/Readers/ReaderFactory.cs b/src/SharpCompress/Readers/ReaderFactory.cs
index 6102f146..7bf72fe9 100644
--- a/src/SharpCompress/Readers/ReaderFactory.cs
+++ b/src/SharpCompress/Readers/ReaderFactory.cs
@@ -24,7 +24,7 @@ public static class ReaderFactory
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncReader OpenAsync(
string filePath,
ReaderOptions? options = null,
CancellationToken cancellationToken = default
@@ -47,7 +47,7 @@ public static class ReaderFactory
///
///
///
- public static ValueTask OpenAsync(
+ public static IAsyncReader OpenAsync(
FileInfo fileInfo,
ReaderOptions? options = null,
CancellationToken cancellationToken = default
@@ -110,7 +110,7 @@ public static class ReaderFactory
);
}
- public static async ValueTask OpenAsync(
+ public static IAsyncReader OpenAsync(
Stream stream,
ReaderOptions? options = null,
CancellationToken cancellationToken = default
@@ -136,19 +136,10 @@ public static class ReaderFactory
if (testedFactory is IReaderFactory readerFactory)
{
((IStreamStack)bStream).StackSeek(pos);
- if (
- await testedFactory.IsArchiveAsync(
- bStream,
- options.Password,
- options.BufferSize,
- cancellationToken
- )
- )
+ if (testedFactory.IsArchive(bStream))
{
((IStreamStack)bStream).StackSeek(pos);
- return await readerFactory
- .OpenReaderAsync(bStream, options, cancellationToken)
- .ConfigureAwait(false);
+ return readerFactory.OpenReaderAsync(bStream, options, cancellationToken);
}
}
((IStreamStack)bStream).StackSeek(pos);
@@ -161,20 +152,10 @@ public static class ReaderFactory
continue; // Already tested above
}
((IStreamStack)bStream).StackSeek(pos);
- if (
- factory is IReaderFactory readerFactory
- && await factory.IsArchiveAsync(
- bStream,
- options.Password,
- options.BufferSize,
- cancellationToken
- )
- )
+ if (factory is IReaderFactory readerFactory && factory.IsArchive(bStream))
{
((IStreamStack)bStream).StackSeek(pos);
- return await readerFactory
- .OpenReaderAsync(bStream, options, cancellationToken)
- .ConfigureAwait(false);
+ return readerFactory.OpenReaderAsync(bStream, options, cancellationToken);
}
}
diff --git a/src/SharpCompress/Writers/IWriterFactory.cs b/src/SharpCompress/Writers/IWriterFactory.cs
index f933e819..2c68c249 100644
--- a/src/SharpCompress/Writers/IWriterFactory.cs
+++ b/src/SharpCompress/Writers/IWriterFactory.cs
@@ -1,6 +1,5 @@
using System.IO;
using System.Threading;
-using System.Threading.Tasks;
using SharpCompress.Factories;
namespace SharpCompress.Writers;
@@ -9,7 +8,7 @@ public interface IWriterFactory : IFactory
{
IWriter Open(Stream stream, WriterOptions writerOptions);
- ValueTask OpenAsync(
+ IWriter OpenAsync(
Stream stream,
WriterOptions writerOptions,
CancellationToken cancellationToken = default
diff --git a/src/SharpCompress/Writers/WriterFactory.cs b/src/SharpCompress/Writers/WriterFactory.cs
index b7ff5cd4..52b62e7d 100644
--- a/src/SharpCompress/Writers/WriterFactory.cs
+++ b/src/SharpCompress/Writers/WriterFactory.cs
@@ -31,7 +31,7 @@ public static class WriterFactory
/// Writer options.
/// Cancellation token.
/// A task that returns an IWriter.
- public static async ValueTask OpenAsync(
+ public static IWriter OpenAsync(
Stream stream,
ArchiveType archiveType,
WriterOptions writerOptions,
@@ -44,9 +44,7 @@ public static class WriterFactory
if (factory != null)
{
- return await factory
- .OpenAsync(stream, writerOptions, cancellationToken)
- .ConfigureAwait(false);
+ return factory.OpenAsync(stream, writerOptions, cancellationToken);
}
throw new NotSupportedException("Archive Type does not have a Writer: " + archiveType);
diff --git a/tests/SharpCompress.Test/GZip/AsyncTests.cs b/tests/SharpCompress.Test/GZip/AsyncTests.cs
index d324cf6a..d000798e 100644
--- a/tests/SharpCompress.Test/GZip/AsyncTests.cs
+++ b/tests/SharpCompress.Test/GZip/AsyncTests.cs
@@ -103,7 +103,13 @@ public class AsyncTests : TestBase
#else
await using (var stream = File.Create(outputPath))
#endif
- await using (var writer = await WriterFactory.OpenAsync(stream, ArchiveType.Zip, CompressionType.Deflate))
+ await using (
+ var writer = await WriterFactory.OpenAsync(
+ stream,
+ ArchiveType.Zip,
+ CompressionType.Deflate
+ )
+ )
{
var testFile = Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz");
diff --git a/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs b/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs
index ac86cc8c..004d4ba8 100644
--- a/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs
+++ b/tests/SharpCompress.Test/GZip/GZipArchiveAsyncTests.cs
@@ -75,7 +75,9 @@ public class GZipArchiveAsyncTests : ArchiveTests
await using Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Tar.tar.gz"));
#endif
await using var archive = await GZipArchive.OpenAsync(stream);
- await Assert.ThrowsAsync(() => archive.AddEntry("jpg\\test.jpg", jpg));
+ await Assert.ThrowsAsync(() =>
+ archive.AddEntry("jpg\\test.jpg", jpg)
+ );
await archive.SaveToAsync(Path.Combine(SCRATCH_FILES_PATH, "Tar.tar.gz"));
}