private Task<SynchronizationReport> PushByUsingMultipartRequest(string destinationServerUrl, Stream sourceFileStream,
IList<RdcNeed> needList)
{
Cts.Token.ThrowIfCancellationRequested();
multipartRequest = new SynchronizationMultipartRequest(destinationServerUrl, ServerInfo, FileName, FileMetadata,
sourceFileStream, needList);
var bytesToTransferCount = needList.Where(x => x.BlockType == RdcNeedType.Source).Sum(x => (double) x.BlockLength);
log.Debug(
"Synchronizing a file '{0}' (ETag {1}) to {2} by using multipart request. Need list length is {3}. Number of bytes that needs to be transfered is {4}",
FileName, FileETag, destinationServerUrl, needList.Count, bytesToTransferCount);
return multipartRequest.PushChangesAsync(Cts.Token);
}