关闭

frostwire设置libtorrent实现顺序下载边下边播

514人阅读 评论(0) 收藏 举报
分类:
首先跟踪代码运行;
main函数调用GULloader函数加载程序的主界面;
为了看下载部分的实现;首先从程序菜单栏添加种子开始跟踪;
com.limegroup.gnutella.gui.actions FileMenuActions 中跟踪添加种子的运行流程
258行 openMagnetOrTorrent函数实现其中选中种子选项
添加种子后;跳转到GUIMediator中的openTorrentFile实现中;
然后跳到BTDownloadMediator中的openTorrentFile中;
  PartialFilesDialog dlg = new PartialFilesDialog(GUIMediator.getAppFrame(), torrentFile);
是选择种子文件列表中待下载的文件选择窗口;当点击OK时,选定待下载文件;
则由BTDownloadMediator中的openTorrentFile中  调用BTEngine.getInstance().download(torrentFile, saveDir, filesSelection);实现顺序下载;
调用BTEngine过程中的跟踪过程如下:
BTEngine中的download函数调用Downloader中的download函数;
当TorrentHandle为空时;会执行 s.asyncAddTorrent(ti, saveDir, priorities, resumeFile);异步添加种子;
事实上通过打印log信息;走到这一步时th确实为空;=所以跟踪到添加种子的程序中;
由于程序采用的是异步进程通信机制;当添加种子完成后;会发出一个alert
通知种子田家完成再执行相应的操作;在BTEngine的 InnerListener中就实现了这种机制。
所以跳到fireDownloadAdded中添加设置顺序下载的属性。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10233次
    • 积分:273
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论