Exemplo n.º 1
0
        protected virtual void OnDownloadConvertResult(CompositeResult <DownloadResult, ConvertResult> result)
        {
            this.DequeueRequests();
            if (this.DownloadConvertResult != null)
            {
                this.DownloadConvertResult(this, new ManagerCompositeCompleteResultEventArgs(result));
            }

            if (this.CurrentlyProcessingRequestsCount == 0)
            {
                this.OnAllFilesDownloaded();
            }
        }
Exemplo n.º 2
0
        protected virtual void DequeueRequest(DownloadConvertRequest currentRequest)
        {
            if (this.CurrentlyProcessingRequestsCount >= this.MaxParallelRequests)
            {
                return;
            }

            this.CurrentlyProcessingRequests.Add(currentRequest);
            Task.Factory.StartNew(() =>
            {
                DownloadResult downloadResult = this.Downloader.Download(currentRequest.MediaFile, currentRequest.DownloadPath);
                this.OnDownloadResult(downloadResult);

                ConvertResult convertResult;
                if (downloadResult.IsDownloaded)
                {
                    convertResult = this.Converter.Convert(currentRequest.MediaFile, downloadResult.DownloadPath, currentRequest.ConvertPath, currentRequest.ConvertMetadata);
                }
                else
                {
                    convertResult = new ConvertResult(currentRequest.MediaFile)
                    {
                        IsConverted = false
                    };
                }

                this.OnConvertResult(convertResult);

                CompositeResult <DownloadResult, ConvertResult> finalResult = new
                                                                              CompositeResult <DownloadResult, ConvertResult>(currentRequest.MediaFile, downloadResult, convertResult);

                lock (SyncRoot)
                {
                    this.CurrentlyProcessingRequests.Remove(currentRequest);
                }

                this.OnDownloadConvertResult(finalResult);
            });
        }
Exemplo n.º 3
0
 public ManagerCompositeCompleteResultEventArgs(CompositeResult <DownloadResult, ConvertResult> compositeResult)
 {
     this.CompositeResult = compositeResult;
 }