public void Transfer(IDs3Client client, string bucketName, string objectName, long blobOffset, Guid jobId, IEnumerable<Range> ranges, Stream stream, IMetadataAccess metadataAccess, Action<string, IDictionary<string, string>> metadataListener, int objectTransferAttempts) { var currentTry = 0; while (true) { var request = new PutObjectRequest(bucketName, objectName, stream) .WithJob(jobId) .WithOffset(blobOffset); if (blobOffset == 0 && metadataAccess != null) { request.WithMetadata(MetadataUtils.GetUriEscapeMetadata(metadataAccess.GetMetadataValue(objectName))); } try { client.PutObject(request); return; } catch (Exception ex) { if (ExceptionClassifier.IsRecoverableException(ex)) { BestEffort.ModifyForRetry(stream, objectTransferAttempts, ref currentTry, request.ObjectName, request.Offset.Value, ex); } else { throw; } } } }
public void Transfer(TransferStrategyOptions transferStrategyOptions) { var currentTry = 0; while (true) { var request = new PutObjectRequest(transferStrategyOptions.BucketName, transferStrategyOptions.ObjectName, transferStrategyOptions.Stream) .WithJob(transferStrategyOptions.JobId) .WithOffset(transferStrategyOptions.BlobOffset); if (transferStrategyOptions.BlobOffset == 0 && transferStrategyOptions.MetadataAccess != null) { request.WithMetadata(MetadataUtils.GetUriEscapeMetadata(transferStrategyOptions.MetadataAccess.GetMetadataValue(transferStrategyOptions.ObjectName))); } if (transferStrategyOptions.Checksum != null) { request.WithChecksum(transferStrategyOptions.Checksum, transferStrategyOptions.ChecksumType); } try { transferStrategyOptions.Client.PutObject(request); return; } catch (Exception ex) { if (ExceptionClassifier.IsRecoverableException(ex)) { BestEffort.ModifyForRetry(transferStrategyOptions.Stream, transferStrategyOptions.ObjectTransferAttempts, ref currentTry, request.ObjectName, request.Offset.Value, ex); } else { throw; } } } }