public async Task <SolutionServiceResult> FinalizeSolutionSet(string id, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(id)) { throw new ArgumentNullException(nameof(id)); } cancellationToken.ThrowIfCancellationRequested(); if (await SolutionCache.FetchSizeAsync(cancellationToken) > Configuration.MaxCache) { return(SolutionServiceResult.Full); } var solution = await SolutionSet.FetchSolutionMetdataAsync(id, cancellationToken); var result = SolutionValidator.Validate(solution, cancellationToken); if (result == ValidationResult.Incomplete) { return(SolutionServiceResult.Incomplete); } if (result == ValidationResult.Invalid) { await SolutionSet.RemoveSolutionMetadataAsync(id, cancellationToken); return(SolutionServiceResult.StartOver); } await SolutionCache.PutAsync(solution, cancellationToken); await SolutionSet.RemoveSolutionMetadataAsync(id, cancellationToken); return(SolutionServiceResult.Success); }
public async Task <TSolution> FetchSolutionSet(string id, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(id)) { throw new ArgumentNullException(nameof(id)); } cancellationToken.ThrowIfCancellationRequested(); return(await SolutionSet.FetchSolutionMetdataAsync(id, cancellationToken)); }