Xc's Blog

Aria2 源码阅读 - DownloadEngine

2018/05/30 Share

DownloadEngine 是Aria2中负责执行下载命令的类,它持有SegmentMan的引用,负责Command的执行。

私有变量

  • rsockets : vector<Socket*>

    读套接字

  • wsockets : vector<Socket*>

    写读套接字

私有方法

  • waitData() : void

    等待rsockets或者wsockets可用

  • addSocket(vector<Socket*>& sockets, *Socket socket) : bool

    遍历sockets,如果目标socket已经存在,则返回false,否则push socket,并且返回true

  • deleteSocket(vector<Socket*>& sockets, *Socket socket) : bool

    遍历sockets,如果目标socket已经存在,则删除socket返回true,否则返回false

公共变量

  • nowait : bool

    初始值为false

  • commands : queue<Command*>

    等待执行的任务列表

  • segmentMan : *SegmentMan

    分块管理器

  • diskWriter : *DiskWriter

  • logger : *Logger
  • option : *Option

公共方法

  • run() : void

    开始下载任务,将任务从commands里面取出,如果执行成功,删除任务。

    每执行完一条任务,调用waitDate,等待可用的socket,打印下载的速度、连接数等情况,并且把nowait置为false

    全部command执行完后,会调用segmentMan的removeIfFinished,删除下载的配置文件。

  • addSocketForReadCheck(Socket* socket) : bool

    尝试在rsockets中添加socket

  • deleteSocketForReadCheck(Socket* socket) : bool

    尝试在rsockets中删除socket

  • addSocketForWriteCheck(Socket* socket) : bool

    尝试在wsockets中添加socket

  • deleteSocketForWriteCheck(Socket* socket) : bool

    尝试在wsockets中删除socket

CATALOG
  1. 1. 私有变量
  2. 2. 私有方法
  3. 3. 公共变量
  4. 4. 公共方法