Ejemplo n.º 1
0
 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));
 }
Ejemplo n.º 2
0
        /// <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)
            }));
        }
Ejemplo n.º 3
0
 /// <inheritdoc />
 public override Task <PlaceFileResponse> PlaceFile(PlaceFileRequest request, ServerCallContext context) => _contentServer.PlaceFileAsync(request, context.CancellationToken);