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++; }
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 )); }
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 ) { }
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; }