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