Exemplo n.º 1
0
        public static void ModifyForRetry(Stream stream, int retries, ref int currentTry, string objectName, long offset, ref IEnumerable<Range> ranges, ref ITransferrer transferrer, Ds3ContentLengthNotMatch ex)
        {
            CanRetry(stream, retries, currentTry, objectName, offset, ex);

            // Issue a partial get for the remainder of the request
            // Seek back one byte to make sure that the connection did not fail part way through a byte
            stream.Seek(-1, SeekOrigin.Current);

            ranges = JobsUtil.RetryRanges(ranges, ex.BytesRead, ex.ContentLength);
            transferrer = new PartialReadTransferrer();

            currentTry++;
        }
Exemplo n.º 2
0
        public static IJob Create(
            JobResponse jobResponse,
            ITransferItemSource transferItemSource,
            ITransferrer transferrer)
        {
            var blobs             = Blob.Convert(jobResponse);
            var rangesForRequests = blobs.ToLookup(b => b, b => b.Range);

            return(new FullObjectJob(
                       jobResponse.BucketName,
                       jobResponse.JobId,
                       transferItemSource,
                       transferrer,
                       rangesForRequests,
                       blobs
                       ));
        }
Exemplo n.º 3
0
 public FullObjectJob(
     string bucketName,
     Guid jobId,
     ITransferItemSource transferItemSource,
     ITransferrer transferrer,
     ILookup <Blob, Range> rangesForRequests,
     IEnumerable <ContextRange <string> > itemsToTrack)
     : base(
         bucketName,
         jobId,
         transferItemSource,
         transferrer,
         rangesForRequests,
         new RequestToObjectRangeTranslator(rangesForRequests),
         itemsToTrack
         )
 {
 }
Exemplo n.º 4
0
        protected Job(
            string bucketName,
            Guid jobId,
            ITransferItemSource transferItemSource,
            ITransferrer transferrer,
            ILookup <Blob, Range> rangesForRequests,
            IRangeTranslator <Blob, TItem> rangeTranslator,
            IEnumerable <ContextRange <TItem> > itemsToTrack)
        {
            this.BucketName          = bucketName;
            this.JobId               = jobId;
            this._transferItemSource = transferItemSource;
            this._transferrer        = transferrer;
            this._rangesForRequests  = rangesForRequests;
            this._rangeTranslator    = rangeTranslator;

            this._itemTracker = new JobItemTracker <TItem>(itemsToTrack);
            this._itemTracker.DataTransferred += size => this.DataTransferred.Call(size);
            this._itemTracker.ItemCompleted   += item =>
            {
                this._resourceStore.Close(item);
                this.ItemCompleted.Call(item);
            };
        }
 internal PartialDataTransferrerDecorator(ITransferrer transferrer, int retries = 5) {
     _transferrer = transferrer;
     _retries = retries;
 }