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(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; var transferrer = _transferrer; var tRanges = ranges; while (true) { try { transferrer.Transfer(client, bucketName, objectName, blobOffset, jobId, tRanges, stream, metadataAccess, metadataListener, objectTransferAttempts); return; } catch (Ds3ContentLengthNotMatch ex) { BestEffort.ModifyForRetry(stream, objectTransferAttempts, ref currentTry, objectName, blobOffset, ref tRanges, ref transferrer, ex); } catch (Exception ex) { if (ExceptionClassifier.IsRecoverableException(ex)) { BestEffort.ModifyForRetry(stream, _retries, ref currentTry, objectName, blobOffset, ex); } else { throw; } } } }
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 response = client.GetObject(new GetObjectRequest(bucketName, objectName, stream, jobId, blobOffset)); if (blobOffset == 0) { metadataListener?.Invoke(objectName, MetadataUtils.GetUriUnEscapeMetadata(response.Metadata)); } }
public static void Init(IMetadataAccess systemLibraries) { var mscorlib = systemLibraries.GetAssemblyBySimpleName("mscorlib") ?? systemLibraries.GetAssemblyBySimpleName("netstandard") ?? throw new ArgumentException("System libraries metadata access doesn't contain mscorlib or netstandard"); Void = mscorlib.MainModule.TypeSystem.Void; IntPtr = mscorlib.MainModule.TypeSystem.IntPtr; String = mscorlib.MainModule.GetType("System.String"); Int = mscorlib.MainModule.GetType("System.Int32"); Long = mscorlib.MainModule.GetType("System.Int64"); Type = mscorlib.MainModule.GetType("System.Type"); Object = mscorlib.MainModule.TypeSystem.Object; Enum = mscorlib.MainModule.GetType("System.Enum"); ValueType = mscorlib.MainModule.GetType("System.ValueType"); Delegate = mscorlib.MainModule.GetType("System.Delegate"); MulticastDelegate = mscorlib.MainModule.GetType("System.MulticastDelegate"); DefaultMemberAttribute = mscorlib.MainModule.GetType("System.Reflection.DefaultMemberAttribute"); NotSupportedException = mscorlib.MainModule.GetType("System.NotSupportedException"); FlagsAttribute = mscorlib.MainModule.GetType("System.FlagsAttribute"); ObsoleteAttribute = mscorlib.MainModule.GetType("System.ObsoleteAttribute"); }