Example #1
0
        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;
                    }
                }
            }
        }
Example #3
0
 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));
     }
 }
Example #4
0
        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");
        }