public static IProtocolProvider CreateProvider(string uri, Downloader downloader)
        {
            IProtocolProvider provider = InternalGetProvider(uri);

            if (downloader != null)
            {
                provider.Initialize(downloader);
            }

            return provider;
        }
        public static IProtocolProvider CreateProvider(Type providerType, Downloader downloader)
        {
            IProtocolProvider provider = CreateFromType(providerType);

            if (ResolvingProtocolProvider != null)
            {
                ResolvingProtocolProviderEventArgs e = new ResolvingProtocolProviderEventArgs(provider, null);
                ResolvingProtocolProvider(null, e);
                provider = e.ProtocolProvider;
            }

            if (downloader != null)
            {
                provider.Initialize(downloader);
            }

            return provider;
        }
예제 #3
0
 public void Initialize(Downloader downloader)
 {
 }
예제 #4
0
        public IProtocolProvider BindProtocolProviderInstance(Downloader downloader)
        {
            if (protocolProviderType == null)
            {
                BindProtocolProviderType();
            }

            if (provider == null)
            {
                provider = ProtocolProviderFactory.CreateProvider(protocolProviderType, downloader);
            }

            return provider;
        }
예제 #5
0
 public IProtocolProvider GetProtocolProvider(Downloader downloader)
 {
     return BindProtocolProviderInstance(downloader);
 }
예제 #6
0
 public SegmentEventArgs(Downloader d, Segment segment)
     : base(d)
 {
     this.segment = segment;
 }
예제 #7
0
 public DownloaderEventArgs(Downloader download, bool willStart)
     : this(download)
 {
     this.willStart = willStart;
 }
예제 #8
0
 private static string GetResumeStr(Downloader d)
 {
     return (d.RemoteFileInfo != null && d.RemoteFileInfo.AcceptRanges ? "Yes" : "No");
 }
예제 #9
0
 protected virtual void OnDownloadAdded(Downloader d, bool willStart)
 {
     if (DownloadAdded != null)
     {
         DownloadAdded(this, new DownloaderEventArgs(d, willStart));
     }
 }
예제 #10
0
        public void Add(Downloader downloader, bool autoStart)
        {
            downloader.StateChanged += new EventHandler(downloader_StateChanged);

            using (LockDownloadList(true))
            {
                downloads.Add(downloader);
            }

            OnDownloadAdded(downloader, autoStart);

            if (autoStart)
            {
                downloader.Start();
            }
        }
예제 #11
0
        public Downloader Add(ResourceLocation rl, ResourceLocation[] mirrors, string localFile, List<Segment> segments, RemoteFileInfo remoteInfo, int requestedSegmentCount, bool autoStart, DateTime createdDateTime)
        {
            Downloader d = new Downloader(rl, mirrors, localFile, segments, remoteInfo, requestedSegmentCount, createdDateTime);
            Add(d, autoStart);

            return d;
        }
예제 #12
0
        public Downloader Add(ResourceLocation rl, ResourceLocation[] mirrors, string localFile, int segments, bool autoStart)
        {
            Downloader d = new Downloader(rl, mirrors, localFile, segments);
            Add(d, autoStart);

            return d;
        }
예제 #13
0
        public void RemoveDownload(Downloader downloader)
        {
            if (downloader.State != DownloaderState.NeedToPrepare ||
                downloader.State != DownloaderState.Ended ||
                downloader.State != DownloaderState.Paused)
            {
                downloader.Pause();
            }

            using (LockDownloadList(true))
            {
                downloads.Remove(downloader);
            }

            OnDownloadRemoved(downloader);
        }
예제 #14
0
 public SegmentEventArgs(Downloader d, Segment segment)
     : base(d)
 {
     this.segment = segment;
 }
예제 #15
0
        private void AddDownload(Downloader d)
        {
            d.RestartingSegment += new EventHandler<SegmentEventArgs>(download_RestartingSegment);
            d.SegmentStoped += new EventHandler<SegmentEventArgs>(download_SegmentEnded);
            d.SegmentFailed += new EventHandler<SegmentEventArgs>(download_SegmentFailed);
            d.SegmentStarted += new EventHandler<SegmentEventArgs>(download_SegmentStarted);
            d.InfoReceived += new EventHandler(download_InfoReceived);
            d.SegmentStarting += new EventHandler<SegmentEventArgs>(Downloader_SegmentStarting);

            string ext = Path.GetExtension(d.LocalFile);

            ListViewItem item = new ListViewItem();

            item.ImageIndex = FileTypeImageList.GetImageIndexByExtention(ext);
            item.Text = Path.GetFileName(d.LocalFile);

            // size
            item.SubItems.Add(ByteFormatter.ToString(d.FileSize));
            // completed
            item.SubItems.Add(ByteFormatter.ToString(d.Transfered));
            // progress
            item.SubItems.Add(String.Format("{0:0.##}%", d.Progress));
            // left
            item.SubItems.Add(TimeSpanFormatter.ToString(d.Left));
            // rate
            item.SubItems.Add("0");
            // added
            item.SubItems.Add(d.CreatedDateTime.ToShortDateString() + " " + d.CreatedDateTime.ToShortTimeString());
            // state
            item.SubItems.Add(d.State.ToString());
            // resume
            item.SubItems.Add(GetResumeStr(d));
            // url
            item.SubItems.Add(d.ResourceLocation.URL);

            mapDownloadToItem[d] = item;
            mapItemToDownload[item] = d;

            lvwDownloads.Items.Add(item);
        }
예제 #16
0
 void Log(Downloader downloader, string msg, LogMode m)
 {
     try
     {
         this.BeginInvoke(
             (MethodInvoker)
           delegate()
           {
               UpdateList();
           }
       );
     }
     catch { }
 }
예제 #17
0
 protected virtual void OnDownloadRemoved(Downloader d)
 {
     if (DownloadRemoved != null)
     {
         DownloadRemoved(this, new DownloaderEventArgs(d));
     }
 }
예제 #18
0
 public DownloaderEventArgs(Downloader download)
 {
     this.downloader = download;
 }
예제 #19
0
 public DownloaderEventArgs(Downloader download, bool willStart)
     : this(download)
 {
     this.willStart = willStart;
 }
예제 #20
0
 public virtual void Initialize(Downloader downloader)
 {
 }
예제 #21
0
 public DownloaderEventArgs(Downloader download)
 {
     this.downloader = download;
 }