⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taskmgr.cpp

📁 dget是一个基于Linux平台的多线程下载工具, 采用C++开发。主要支持FTP, HTTP, MMS, RTSP协议下载, 目前为止主要实现了FTP, HTTP, MMS,RTSP协议的多线程下载
💻 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 + -