private Task <PlaceFileResponse> PlaceFileAsync(PlaceFileRequest request, CancellationToken token) { return(RunFuncAsync( request.Header, async(context, session) => { PlaceFileResult placeFileResult = await session.PlaceFileAsync( context.OperationContext, request.ContentHash.ToContentHash((HashType)request.HashType), new AbsolutePath(request.Path), (FileAccessMode)request.FileAccessMode, FileReplacementMode.ReplaceExisting, // Hard-coded because the service can't tell if this is a retry (where the previous try may have left a partial file) (FileRealizationMode)request.FileRealizationMode, token); return new PlaceFileResponse { Header = new ResponseHeader( context.StartTime, placeFileResult.Succeeded, (int)placeFileResult.Code, placeFileResult.ErrorMessage, placeFileResult.Diagnostics), ContentSize = placeFileResult.FileSize }; }, (context, errorMessage) => new PlaceFileResponse { Header = ResponseHeader.Failure(context.StartTime, (int)PlaceFileResult.ResultCode.Error, errorMessage) }, token)); }
/// <summary> /// Implements a place file request. /// </summary> private async Task <PlaceFileResponse> PlaceFileAsync(PlaceFileRequest request, CancellationToken token) { LogRequestHandling(); DateTime startTime = DateTime.UtcNow; var cacheContext = new Context(new Guid(request.Header.TraceId), _logger); return(await RunFuncAndReportAsync( request.Header.SessionId, async session => { PlaceFileResult placeFileResult = await session.PlaceFileAsync( cacheContext, request.ContentHash.ToContentHash((HashType)request.HashType), new AbsolutePath(request.Path), (FileAccessMode)request.FileAccessMode, FileReplacementMode.ReplaceExisting, // Hard-coded because the service can't tell if this is a retry (where the previous try may have left a partial file) (FileRealizationMode)request.FileRealizationMode, token); return new PlaceFileResponse { Header = new ResponseHeader( startTime, placeFileResult.Succeeded, (int)placeFileResult.Code, placeFileResult.ErrorMessage, placeFileResult.Diagnostics), ContentSize = placeFileResult.FileSize }; }, errorMessage => new PlaceFileResponse { Header = ResponseHeader.Failure(startTime, (int)PlaceFileResult.ResultCode.Error, errorMessage) })); }
/// <inheritdoc /> public override Task <PlaceFileResponse> PlaceFile(PlaceFileRequest request, ServerCallContext context) => _contentServer.PlaceFileAsync(request, context.CancellationToken);