report property

Requests the current scan report.

Implementation

Future<PortScannerTaskReport> get report async {
  if (!_isRunning) {
    throw PortScannerTaskException('Scanning is not in progress');
  }
  var reports = await Future.wait(_scanners.map((scanner) => scanner.report));

  // Aggregate partial results
  var partialReport = Report(host, ports, status: ReportStatus.progress);
  for (var report in reports) {
    partialReport.addOpen(ports: report.openPorts);
    partialReport.addClosed(ports: report.closedPorts);
    partialReport.addFiltered(ports: report.filteredPorts);
    if (partialReport.status != ReportStatus.progress) {
      partialReport.status = report.status;
    }
  }

  return _reportToPortScannerTaskReport(partialReport);
}