From b8ef1ecafcf61f80d08c5a4678cb4f78370b4e2c Mon Sep 17 00:00:00 2001 From: Anders Gardebring Date: Mon, 24 Apr 2017 10:22:49 +0200 Subject: [PATCH] Revert "Add new feature to allow injection of an action into the extraction process. This allows for showing or logging progress of the extraction process, especially useful for large files that might take a long time to extract." This reverts commit 467fc2d03dc4f0710761d17e6728c68b73b65d79. --- .../Archives/IArchiveEntryExtensions.cs | 7 +++---- src/SharpCompress/Readers/AbstractReader.cs | 11 +++++----- src/SharpCompress/Readers/IReader.cs | 3 +-- .../Readers/IReaderExtensions.cs | 21 ++++++------------- src/SharpCompress/Utility.cs | 5 +---- src/SharpCompress/Writers/AbstractWriter.cs | 2 +- src/SharpCompress/Writers/GZip/GZipWriter.cs | 4 ++-- src/SharpCompress/Writers/IWriter.cs | 2 +- src/SharpCompress/Writers/Tar/TarWriter.cs | 8 +++---- src/SharpCompress/Writers/Zip/ZipWriter.cs | 8 +++---- 10 files changed, 29 insertions(+), 42 deletions(-) diff --git a/src/SharpCompress/Archives/IArchiveEntryExtensions.cs b/src/SharpCompress/Archives/IArchiveEntryExtensions.cs index 878ad797..f4f8cb6b 100644 --- a/src/SharpCompress/Archives/IArchiveEntryExtensions.cs +++ b/src/SharpCompress/Archives/IArchiveEntryExtensions.cs @@ -1,5 +1,4 @@ -using System; -using System.IO; +using System.IO; using SharpCompress.Common; using SharpCompress.IO; using SharpCompress.Readers; @@ -8,7 +7,7 @@ namespace SharpCompress.Archives { public static class IArchiveEntryExtensions { - public static void WriteTo(this IArchiveEntry archiveEntry, Stream streamToWriteTo, Action partTransferredAction = null) + public static void WriteTo(this IArchiveEntry archiveEntry, Stream streamToWriteTo) { if (archiveEntry.Archive.Type == ArchiveType.Rar && archiveEntry.Archive.IsSolid) { @@ -33,7 +32,7 @@ namespace SharpCompress.Archives { using (Stream s = new ListeningStream(streamListener, entryStream)) { - s.TransferTo(streamToWriteTo, partTransferredAction); + s.TransferTo(streamToWriteTo); } } streamListener.FireEntryExtractionEnd(archiveEntry); diff --git a/src/SharpCompress/Readers/AbstractReader.cs b/src/SharpCompress/Readers/AbstractReader.cs index a055c17f..380e8df5 100644 --- a/src/SharpCompress/Readers/AbstractReader.cs +++ b/src/SharpCompress/Readers/AbstractReader.cs @@ -167,7 +167,7 @@ namespace SharpCompress.Readers } } - public void WriteEntryTo(Stream writableStream, Action partTransferredAction = null) + public void WriteEntryTo(Stream writableStream) { if (wroteCurrentEntry) { @@ -175,21 +175,22 @@ namespace SharpCompress.Readers } if ((writableStream == null) || (!writableStream.CanWrite)) { - throw new ArgumentNullException("A writable Stream was required. Use Cancel if that was intended."); + throw new ArgumentNullException( + "A writable Stream was required. Use Cancel if that was intended."); } var streamListener = this as IReaderExtractionListener; streamListener.FireEntryExtractionBegin(Entry); - Write(writableStream, partTransferredAction); + Write(writableStream); streamListener.FireEntryExtractionEnd(Entry); wroteCurrentEntry = true; } - internal void Write(Stream writeStream, Action partTransferredAction = null) + internal void Write(Stream writeStream) { using (Stream s = OpenEntryStream()) { - s.TransferTo(writeStream, partTransferredAction); + s.TransferTo(writeStream); } } diff --git a/src/SharpCompress/Readers/IReader.cs b/src/SharpCompress/Readers/IReader.cs index 6b1a7818..0df03177 100644 --- a/src/SharpCompress/Readers/IReader.cs +++ b/src/SharpCompress/Readers/IReader.cs @@ -20,8 +20,7 @@ namespace SharpCompress.Readers /// Decompresses the current entry to the stream. This cannot be called twice for the current entry. /// /// - /// - void WriteEntryTo(Stream writableStream, Action partTransferredAction = null); + void WriteEntryTo(Stream writableStream); bool Cancelled { get; } void Cancel(); diff --git a/src/SharpCompress/Readers/IReaderExtensions.cs b/src/SharpCompress/Readers/IReaderExtensions.cs index 2fdeb1d9..4100a607 100644 --- a/src/SharpCompress/Readers/IReaderExtensions.cs +++ b/src/SharpCompress/Readers/IReaderExtensions.cs @@ -1,5 +1,4 @@ #if !NO_FILE -using System; using System.IO; using SharpCompress.Common; #endif @@ -40,12 +39,8 @@ namespace SharpCompress.Readers /// /// Extract to specific directory, retaining filename /// - public static void WriteEntryToDirectory( - this IReader reader, - string destinationDirectory, - ExtractionOptions options = null, - Action partTransferredAction = null - ) + public static void WriteEntryToDirectory(this IReader reader, string destinationDirectory, + ExtractionOptions options = null) { string destinationFileName = string.Empty; string file = Path.GetFileName(reader.Entry.Key); @@ -71,7 +66,7 @@ namespace SharpCompress.Readers if (!reader.Entry.IsDirectory) { - reader.WriteEntryToFile(destinationFileName, options, partTransferredAction); + reader.WriteEntryToFile(destinationFileName, options); } else if (options.ExtractFullPath && !Directory.Exists(destinationFileName)) { @@ -82,12 +77,8 @@ namespace SharpCompress.Readers /// /// Extract to specific file /// - public static void WriteEntryToFile( - this IReader reader, - string destinationFileName, - ExtractionOptions options = null, - Action partTransferredAction = null - ) + public static void WriteEntryToFile(this IReader reader, string destinationFileName, + ExtractionOptions options = null) { FileMode fm = FileMode.Create; options = options ?? new ExtractionOptions() @@ -101,7 +92,7 @@ namespace SharpCompress.Readers } using (FileStream fs = File.Open(destinationFileName, fm)) { - reader.WriteEntryTo(fs, partTransferredAction); + reader.WriteEntryTo(fs); //using (Stream s = reader.OpenEntryStream()) //{ // s.TransferTo(fs); diff --git a/src/SharpCompress/Utility.cs b/src/SharpCompress/Utility.cs index 253e0e9d..451075f3 100644 --- a/src/SharpCompress/Utility.cs +++ b/src/SharpCompress/Utility.cs @@ -229,18 +229,15 @@ namespace SharpCompress return DosDateToDateTime((UInt32)iTime); } - public static long TransferTo(this Stream source, Stream destination, Action partTransferredAction = null) + public static long TransferTo(this Stream source, Stream destination) { byte[] array = new byte[81920]; int count; - var iterations = 0; long total = 0; while ((count = source.Read(array, 0, array.Length)) != 0) { total += count; destination.Write(array, 0, count); - iterations++; - partTransferredAction?.Invoke(total, iterations); } return total; } diff --git a/src/SharpCompress/Writers/AbstractWriter.cs b/src/SharpCompress/Writers/AbstractWriter.cs index 79f880b9..dde6892a 100644 --- a/src/SharpCompress/Writers/AbstractWriter.cs +++ b/src/SharpCompress/Writers/AbstractWriter.cs @@ -24,7 +24,7 @@ namespace SharpCompress.Writers public ArchiveType WriterType { get; } - public abstract void Write(string filename, Stream source, DateTime? modificationTime, Action partTransferredAction = null); + public abstract void Write(string filename, Stream source, DateTime? modificationTime); protected virtual void Dispose(bool isDisposing) { diff --git a/src/SharpCompress/Writers/GZip/GZipWriter.cs b/src/SharpCompress/Writers/GZip/GZipWriter.cs index 48b88a29..d9ef3562 100644 --- a/src/SharpCompress/Writers/GZip/GZipWriter.cs +++ b/src/SharpCompress/Writers/GZip/GZipWriter.cs @@ -26,7 +26,7 @@ namespace SharpCompress.Writers.GZip base.Dispose(isDisposing); } - public override void Write(string filename, Stream source, DateTime? modificationTime, Action partTransferredAction = null) + public override void Write(string filename, Stream source, DateTime? modificationTime) { if (wroteToStream) { @@ -35,7 +35,7 @@ namespace SharpCompress.Writers.GZip GZipStream stream = OutputStream as GZipStream; stream.FileName = filename; stream.LastModified = modificationTime; - source.TransferTo(stream, partTransferredAction); + source.TransferTo(stream); wroteToStream = true; } } diff --git a/src/SharpCompress/Writers/IWriter.cs b/src/SharpCompress/Writers/IWriter.cs index d55e8b74..a15225bf 100644 --- a/src/SharpCompress/Writers/IWriter.cs +++ b/src/SharpCompress/Writers/IWriter.cs @@ -7,6 +7,6 @@ namespace SharpCompress.Writers public interface IWriter : IDisposable { ArchiveType WriterType { get; } - void Write(string filename, Stream source, DateTime? modificationTime, Action partTransferredAction = null); + void Write(string filename, Stream source, DateTime? modificationTime); } } \ No newline at end of file diff --git a/src/SharpCompress/Writers/Tar/TarWriter.cs b/src/SharpCompress/Writers/Tar/TarWriter.cs index 552b0c93..0dbdb0a2 100644 --- a/src/SharpCompress/Writers/Tar/TarWriter.cs +++ b/src/SharpCompress/Writers/Tar/TarWriter.cs @@ -39,9 +39,9 @@ namespace SharpCompress.Writers.Tar InitalizeStream(destination, !options.LeaveStreamOpen); } - public override void Write(string filename, Stream source, DateTime? modificationTime, Action partTransferredAction = null) + public override void Write(string filename, Stream source, DateTime? modificationTime) { - Write(filename, source, modificationTime, null, partTransferredAction); + Write(filename, source, modificationTime, null); } private string NormalizeFilename(string filename) @@ -57,7 +57,7 @@ namespace SharpCompress.Writers.Tar return filename.Trim('/'); } - public void Write(string filename, Stream source, DateTime? modificationTime, long? size, Action partTransferredAction = null) + public void Write(string filename, Stream source, DateTime? modificationTime, long? size) { if (!source.CanSeek && size == null) { @@ -71,7 +71,7 @@ namespace SharpCompress.Writers.Tar header.Name = NormalizeFilename(filename); header.Size = realSize; header.Write(OutputStream); - size = source.TransferTo(OutputStream, partTransferredAction); + size = source.TransferTo(OutputStream); PadTo512(size.Value, false); } diff --git a/src/SharpCompress/Writers/Zip/ZipWriter.cs b/src/SharpCompress/Writers/Zip/ZipWriter.cs index 96efa0b6..e1a001b5 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriter.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriter.cs @@ -90,19 +90,19 @@ namespace SharpCompress.Writers.Zip } } - public override void Write(string entryPath, Stream source, DateTime? modificationTime, Action partTransferredAction = null) + public override void Write(string entryPath, Stream source, DateTime? modificationTime) { Write(entryPath, source, new ZipWriterEntryOptions() { ModificationDateTime = modificationTime - }, partTransferredAction); + }); } - public void Write(string entryPath, Stream source, ZipWriterEntryOptions zipWriterEntryOptions, Action partTransferredAction = null) + public void Write(string entryPath, Stream source, ZipWriterEntryOptions zipWriterEntryOptions) { using (Stream output = WriteToStream(entryPath, zipWriterEntryOptions)) { - source.TransferTo(output, partTransferredAction); + source.TransferTo(output); } }