public override TypedData Process(TypedData data, IMutableProgressTracker progress, CancellationToken cancelToken) { switch (data.DataType) { case TypedDataType.Image: var rawImageProgress = new MutableProgressTracker(); var uploadProgress = new MutableProgressTracker(); var aggregateProgress = new AggregateProgressTracker(new ProgressTrackerCollection { { rawImageProgress, ImageWriter.ProcessTimeEstimate.ProgressWeight }, { uploadProgress, ProcessTimeEstimate.ProgressWeight }, }); aggregateProgress.BindTo(progress); progress.Status = "Converting image"; using (var rawImageData = ImageWriter.Process(data, rawImageProgress, cancelToken)) { progress.Status = "Uploading image"; return Upload(rawImageData, uploadProgress, cancelToken); } default: return null; } }
public void UpdateRaised() { var mpt = new MutableProgressTracker(); int progressChangedCallCount = 0; mpt.ProgressUpdated += (sender, e) => { progressChangedCallCount += 1; }; mpt.Progress = 1; Assert.AreEqual(1, progressChangedCallCount); mpt.Progress = 1; Assert.AreEqual(2, progressChangedCallCount); }
public static HttpWebResponse Execute(Uri uri, Stream requestData, IMutableProgressTracker progress, CancellationToken cancelToken) { // QUICK HACK var requestProgress = new MutableProgressTracker(); var responseProgress = new MutableProgressTracker(); var aggregateProgress = new AggregateProgressTracker(new ProgressTrackerCollection { { requestProgress, TimeEstimates.LongOperation.ProgressWeight }, { responseProgress, TimeEstimates.ShortOperation.ProgressWeight }, }); aggregateProgress.BindTo(progress); try { var request = CreateRequest(uri, @"POST"); request.ContentLength = requestData.Length; using (var requestStream = request.GetRequestStream()) using (var progressStream = new ProgressTrackingStreamWrapper(requestStream, request.ContentLength)) { progressStream.BindTo(requestProgress); requestData.CopyTo(progressStream, cancelToken); } bool canCancel = true; cancelToken.Register(() => { if (canCancel) { request.Abort(); } }); var response = (HttpWebResponse) request.GetResponse(); responseProgress.Progress = 1; // TODO HTTP download Progress canCancel = false; return response; } catch (WebException e) { if (e.Status == WebExceptionStatus.RequestCanceled) { throw new OperationCanceledException(e.Message, e, cancelToken); } throw new OperationCanceledException(e.Message, e, cancelToken); } }
public TypedData Process(TypedData data, IMutableProgressTracker progress, CancellationToken cancelToken) { progress.Status = "Uploading data"; var galleryProgress = new MutableProgressTracker(); var uploadProgress = new MutableProgressTracker(); var aggregateProgress = new AggregateProgressTracker(new ProgressTrackerCollection { { galleryProgress, TimeEstimates.ShortOperation.ProgressWeight }, { uploadProgress, TimeEstimates.LongOperation.ProgressWeight }, }); aggregateProgress.BindTo(progress); var galleryAccessData = CreateGallery(galleryProgress, cancelToken); return UploadData(galleryAccessData, data, uploadProgress, cancelToken); }
public void ZeroProgressOnNew() { var mpt = new MutableProgressTracker(); Assert.AreEqual(0, mpt.Progress); }
public static HttpWebResponse Execute(Uri uri, MultipartData requestData, HttpRequestMethod requestMethod, IMutableProgressTracker progress, CancellationToken cancelToken) { var requestProgress = new MutableProgressTracker(); var responseProgress = new MutableProgressTracker(); var aggregateProgress = new AggregateProgressTracker(new ProgressTrackerCollection { { requestProgress, TimeEstimates.LongOperation.ProgressWeight }, { responseProgress, TimeEstimates.ShortOperation.ProgressWeight }, }); aggregateProgress.BindTo(progress); try { var request = BuildRequest(uri, requestMethod, requestData, requestProgress, cancelToken); bool canCancel = true; cancelToken.Register(() => { if (canCancel) { request.Abort(); } }); var response = (HttpWebResponse) request.GetResponse(); responseProgress.Progress = 1; // TODO HTTP download Progress canCancel = false; return response; } catch (WebException e) { if (e.Status == WebExceptionStatus.RequestCanceled) { throw new OperationCanceledException(e.Message, e, cancelToken); } throw new OperationCanceledException(e.Message, e, cancelToken); } }