Exemplo n.º 1
0
 private Task <PutResult> PutFileAsync(
     SessionContext context,
     ContentHash contentHash,
     AbsolutePath path,
     FileRealizationMode realizationMode)
 {
     return(PerformOperationAsync(
                context,
                sessionContext => _client.PutFileAsync(
                    new PutFileRequest
     {
         Header = sessionContext.CreateHeader(),
         ContentHash = contentHash.ToByteString(),
         HashType = (int)contentHash.HashType,
         FileRealizationMode = (int)realizationMode,
         Path = path.Path
     }),
                response =>
     {
         if (!response.Header.Succeeded)
         {
             return new PutResult(contentHash, response.Header.ErrorMessage, response.Header.Diagnostics);
         }
         else
         {
             return new PutResult(response.ContentHash.ToContentHash((HashType)response.HashType), response.ContentSize);
         }
     }));
 }
Exemplo n.º 2
0
        private async Task <PutResult> PutFileAsync(
            Context context,
            ContentHash contentHash,
            AbsolutePath path,
            FileRealizationMode realizationMode,
            int sessionId)
        {
            DateTime        startTime = DateTime.UtcNow;
            PutFileResponse response  = await RunClientActionAndThrowIfFailedAsync(context, async() => await _client.PutFileAsync(
                                                                                       new PutFileRequest
            {
                Header              = new RequestHeader(context.Id, sessionId),
                ContentHash         = contentHash.ToByteString(),
                HashType            = (int)contentHash.HashType,
                FileRealizationMode = (int)realizationMode,
                Path = path.Path
            }));

            long ticksWaited = response.Header.ServerReceiptTimeUtcTicks - startTime.Ticks;

            _tracer.TrackClientWaitForServerTicks(ticksWaited);

            if (!response.Header.Succeeded)
            {
                await ResetOnUnknownSessionAsync(context, response.Header, sessionId);

                return(new PutResult(contentHash, response.Header.ErrorMessage, response.Header.Diagnostics));
            }
            else
            {
                return(new PutResult(response.ContentHash.ToContentHash((HashType)response.HashType), response.ContentSize));
            }
        }