public sealed class PeAnalysisOrchestrator
{
private readonly IEnumerable<IPeAnalyzer> _analyzers;
public PeAnalysisOrchestrator(IEnumerable<IPeAnalyzer> analyzers)
{
_analyzers = analyzers;
}
public async Task<IReadOnlyList<AnalysisFinding>> AnalyzeAsync(PeImageInfo peInfo, CancellationToken cancellationToken)
{
var findings = new List<AnalysisFinding>();
foreach (var analyzer in _analyzers)
{
cancellationToken.ThrowIfCancellationRequested();
findings.AddRange(await analyzer.AnalyzeAsync(peInfo, cancellationToken).ConfigureAwait(false));
}
return findings;
}
}