Skip to content
This repository has been archived by the owner on Jul 15, 2023. It is now read-only.

Commit

Permalink
Add IProgressTask
Browse files Browse the repository at this point in the history
  • Loading branch information
twsouthwick committed Mar 4, 2015
1 parent ea16c87 commit b8560e8
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 39 deletions.
66 changes: 35 additions & 31 deletions src/Microsoft.Fx.Portability/ApiPortClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,29 +95,33 @@ private AnalyzeRequest GenerateRequest(IApiPortOptions options, IDependencyInfo
/// <returns>Set of APIs/assemblies that are not portable/missing.</returns>
private async Task<ReportingResult> GetResultFromService(AnalyzeRequest request, IDependencyInfo dependencyFinder)
{
_progressReport.StartTask(LocalizedStrings.SendingDataToService);
var fullResponse = await _apiPortService.SendAnalysisAsync(request);
_progressReport.FinishTask();
var fullResponse = await RetrieveResultAsync(request);

CheckEndpointStatus(fullResponse.Headers.Status);

_progressReport.StartParallelTask(LocalizedStrings.ComputingReport, LocalizedStrings.ProcessedItems);

var response = fullResponse.Response;

var result = _reportGenerator.ComputeReport(
response.Targets,
response.SubmissionId,
dependencyFinder?.Dependencies,
response.MissingDependencies,
dependencyFinder?.UnresolvedAssemblies,
response.UnresolvedUserAssemblies,
dependencyFinder?.AssembliesWithErrors
);

_progressReport.FinishTask();
using (_progressReport.StartParallelTask(LocalizedStrings.ComputingReport, LocalizedStrings.ProcessedItems))
{
var response = fullResponse.Response;
var hasDependencyFinder = dependencyFinder != null;

return _reportGenerator.ComputeReport(
response.Targets,
response.SubmissionId,
hasDependencyFinder ? dependencyFinder.Dependencies : null, //allDependencies
response.MissingDependencies,
hasDependencyFinder ? dependencyFinder.UnresolvedAssemblies : null, //unresolvedAssemblies
response.UnresolvedUserAssemblies,
hasDependencyFinder ? dependencyFinder.AssembliesWithErrors : null //assembliesWithErrors
);
}
}

return result;
private async Task<ServiceResponse<AnalyzeResponse>> RetrieveResultAsync(AnalyzeRequest request)
{
using (_progressReport.StartTask(LocalizedStrings.SendingDataToService))
{
return await _apiPortService.SendAnalysisAsync(request);
}
}

/// <summary>
Expand All @@ -126,13 +130,14 @@ private async Task<ReportingResult> GetResultFromService(AnalyzeRequest request,
/// <returns>An array of bytes corresponding to the report.</returns>
private async Task<byte[]> GetResultFromService(AnalyzeRequest request, ResultFormat format)
{
_progressReport.StartTask(LocalizedStrings.SendingDataToService);
var response = await _apiPortService.SendAnalysisAsync(request, format);
_progressReport.FinishTask();
using (_progressReport.StartTask(LocalizedStrings.SendingDataToService))
{
var response = await _apiPortService.SendAnalysisAsync(request, format);

CheckEndpointStatus(response.Headers.Status);
CheckEndpointStatus(response.Headers.Status);

return response.Response;
return response.Response;
}
}

/// <summary>
Expand All @@ -149,15 +154,14 @@ private void CheckEndpointStatus(EndpointStatus status)

public async Task<IEnumerable<AvailableTarget>> ListTargets()
{
_progressReport.StartTask(LocalizedStrings.RetrievingTargets);

var targets = await _apiPortService.GetTargetsAsync();

_progressReport.FinishTask();
using (_progressReport.StartTask(LocalizedStrings.RetrievingTargets))
{
var targets = await _apiPortService.GetTargetsAsync();

CheckEndpointStatus(targets.Headers.Status);
CheckEndpointStatus(targets.Headers.Status);

return targets.Response;
return targets.Response;
}
}
}
}
9 changes: 3 additions & 6 deletions src/Microsoft.Fx.Portability/IProgressReporter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ namespace Microsoft.Fx.Portability
{
public interface IProgressReporter
{
void AbortTask();
void FinishTask();
void ReportIssue(string issueFormat, params object[] items);
void ReportUnitComplete();
void StartParallelTask(string taskName, string details);
void StartTask(string taskName);
void ReportIssue(string issue);
IProgressTask StartParallelTask(string taskName, string details);
IProgressTask StartTask(string taskName);
IReadOnlyCollection<string> Issues { get; }
}
}
13 changes: 13 additions & 0 deletions src/Microsoft.Fx.Portability/IProgressTask.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System;

namespace Microsoft.Fx.Portability
{
public interface IProgressTask : IDisposable
{
void ReportUnitComplete();
void Abort();
}
}
4 changes: 2 additions & 2 deletions src/Microsoft.Fx.Portability/Reporting/ReportFileWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ private string GetFileName(string directory, string fileName, ResultFormat forma

if (!string.IsNullOrEmpty(originalExtension) && !originalExtension.Equals(extension, StringComparison.CurrentCultureIgnoreCase))
{
_progressReporter.ReportIssue(LocalizedStrings.ChangingFileExtension, fileName, originalExtension, extension);
_progressReporter.ReportIssue(string.Format(LocalizedStrings.ChangingFileExtension, fileName, originalExtension, extension));
}

var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);
Expand All @@ -99,7 +99,7 @@ private string GetFileName(string directory, string fileName, ResultFormat forma
// This file exists already but since we don't care about uniqueness, we'll overwrite it.
if (!isUnique)
{
_progressReporter.ReportIssue(LocalizedStrings.OverwriteFile, uniqueName);
_progressReporter.ReportIssue(string.Format(LocalizedStrings.OverwriteFile, uniqueName));
return uniqueName;
}

Expand Down

0 comments on commit b8560e8

Please sign in to comment.