Table of Contents

Interface IExtractionRouter

Namespace
Archiver.Core.Interfaces
Assembly
Archiver.Core.dll

Routes ExtractAsync calls to IArchiveService (ZIP) or ITarService (tar-family) per archive, based on ArchiveFormatDetector, and merges the results. Never throws — all errors are captured in ArchiveResult.Errors.

public interface IExtractionRouter

Methods

ExtractAsync(ExtractOptions, IProgress<ProgressReport>?, CancellationToken)

Extracts one or more archives, routed per-archive by format. Cancellation in either engine throws OperationCanceledException (T-F260); nothing is merged then.

Task<ArchiveResult> ExtractAsync(ExtractOptions options, IProgress<ProgressReport>? progress = null, CancellationToken cancellationToken = default)

Parameters

options ExtractOptions
progress IProgress<ProgressReport>
cancellationToken CancellationToken

Returns

Task<ArchiveResult>

TestAsync(IReadOnlyList<string>, IProgress<ProgressReport>?, Func<PasswordPromptInfo, Task<PasswordDecision>>?, bool, CancellationToken)

Verifies archives without writing anything (T-F261): ZIP archives through IArchiveService.TestAsync; tar-family archives are skipped, since tar.exe has no test mode; archives refused by Group Policy or tar.exe's capabilities are skipped with that reason. Never starts tar.exe. Cancellation throws OperationCanceledException.

With verifyRecoveryData (T-F275 step 3), each archive is also checked against a PAR2 set found next to it, a .par2 path stands for the archive its set protects, and a tar-family archive with a usable set is checked by it instead of being skipped; RecoveryChecks says what each set found. Under DisableRecoveryData no set is looked for and a .par2 path is refused.

Task<ArchiveResult> TestAsync(IReadOnlyList<string> archivePaths, IProgress<ProgressReport>? progress = null, Func<PasswordPromptInfo, Task<PasswordDecision>>? resolvePasswordAsync = null, bool verifyRecoveryData = false, CancellationToken cancellationToken = default)

Parameters

archivePaths IReadOnlyList<string>
progress IProgress<ProgressReport>
resolvePasswordAsync Func<PasswordPromptInfo, Task<PasswordDecision>>
verifyRecoveryData bool
cancellationToken CancellationToken

Returns

Task<ArchiveResult>