📄 taskmgr.cpp
字号:
/* * by balancesli * balancesli@gmail.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#ifndef __TASKMGR_H#define __TASKMGR_H#include <sys/types.h>#include <unistd.h>#include "Task.h"#include "TaskMgr.h"#include "Url.h"#include "Utils.h"#include "dLog.h"#include "dget.h"TTask * TTaskManager :: CreateTask(int nConn){ char buf[20]; if (nConn > 10 || nConn < 0) return NULL; TTask * NewTask = new TTask(nConn); AddTask(NewTask); sprintf(buf, "Task%d", GetTaskCnt()); NewTask->SetTaskName(buf); NewTask->SetTaskStatus(START); return NewTask;}TTask * TTaskManager :: GetTaskByName(const char * name){ for( TTask * tsk = TaskList.first(); tsk; TaskList.next() ) { if(strcmp(tsk->GetTaskName(), name) == 0 ) return tsk; }}void TTaskManager :: AddTask(TTask * This){ TaskList.append(This); TaskCnt++;}void TTaskManager :: DeleteTask(TTask * This){ TaskList.remove(This); delete This; TaskCnt--;}void TTaskManager :: ClearAllTask(void){ TaskList.clear(); TaskCnt = 0;}int TTaskManager :: StopTask(TTask * This){ This->TerminateThreads();}void TTaskManager :: InitTask( TTask * Task, TUrl * u, char * FilePath ){ int nConn = 0; Task->plog = new TLog(u->HostFileName); Task->u = u; Task->SetOutFilePath( FilePath ); if(Task->plog->IsLogFileExist()) { if ( Task->plog->ReadLogFile() == -1 ) { ShowMsg( "Error opening LogFile for reading" ); return ; } nConn = Task->plog->ConnCnt; delete Task; Task = new TTask(nConn); Task->SetMode(RESUME); Task->InitThreads(u, u->FileSize, "ab"); } else { if(u->ResumeSupport == false) { nConn = 1; delete Task; Task = new TTask(nConn); } if(Task->plog->CreateLogFile(nConn) == -1) { ShowMsg("Error opening file for writing logfile"); return ; } Task->SetMode(NORMAL); Task->InitThreads(u, u->FileSize, "wb"); }}void TTaskManager :: TerminateAllTask(void){ //a litter problem for( TTask * tsk = TaskList.first(); tsk; TaskList.next() ) { StopTask(tsk); tsk->DeleteDownloads(); }}void TTaskManager :: ScheduleTask( TTask * This ){ This->SetdlStartTime(); This->SetTaskStatus(RUNNING); if(This->u->Proto == ptFTP) This->ExecDownloads((ThreadFunc)FtpThread); if(This->u->Proto == ptHTTP) This->ExecDownloads((ThreadFunc)HttpThread);}void TTaskManager :: SupendTask(TTask * This){ //}void TTaskManager :: ResumeTask(TTask * This){ //}TaskStatus TTaskManager :: QueryTaskStatus(TTask * This){ return This->GetTaskStatus();}int QueryTaskPrio(TTask * This){ return This->GetTaskPrio();}int TTaskManager :: GetTaskCnt(void) const{ return TaskCnt;} #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -