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

📄 task.h

📁 dget是一个基于Linux平台的多线程下载工具, 采用C++开发。主要支持FTP, HTTP, MMS, RTSP协议下载, 目前为止主要实现了FTP, HTTP, MMS,RTSP协议的多线程下载
💻 H
字号:
#ifndef __TASK_H#define __TASK_H#include <pthread.h>#include <sys/time.h>#include <time.h>#include <string.h>#include "dget.h"#ifdef USE_QT#include "listviews.h"#include <qobject.h>#endif#include "Url.h"#include "dLog.h"#define MAXTHREADS 10typedef enum { 	IDLE, 	CONNECTING, 	LOGGININ, 	DOWNLOADING, 	ALLDONE, 	LOGINFAIL, 	CONREJECT, 	REMOTEFATAL, 	LOCALFATAL, 	TIMEDOUT, 	MAXTRYS,	UNKNOWN}ThreadStatus; extern  const char * ThreadStatusList[];typedef  void * (*ThreadFunc)(void *);class TTask;class TThread;extern  void FtpThread(TThread * This);extern  void HttpThread(TThread * This);class TThread{public:	pthread_t  ThreadId;		char Name[10]; 	TUrl * u;	ThreadStatus Status;	TTask * Task;  // Owner of Thread		char * LocalFile;	char * FileMode;		long BlkSize;	//float AvgSpeed;		long RemoteStartPos;    long RemoteEndPos;	long RemoteBytesReceived;		long LocalStartPos;			struct timeval BeginTime;    struct timeval EndTime;	struct timeval RetryStart;		bool Retry;	int TryAttempts;	int Retval;public:    TThread( void );    virtual ~TThread( void );	    TThread* Self( void );    virtual bool Init( void );    virtual void Run( void );    virtual int  Exit( void );	friend void* StartThread( void* );	};typedef enum {	RUNNING,		FINISHED,	START,	STOP,	DEAD}TaskStatus; class TTask : public QObject{	Q_OBJECTprivate :	char Name[16];	int Prio;	int Policy;		TaskStatus ts;		int ThreadCnt;	RunMode Mode;	//	TTaskManager * TaskMgr; // owner of Task	char FilePath[1024];	long TimeOfCost;		// Time of ExecTask 	struct timeval dlStartTime;	struct timeval dlEndTime;	//protect Thread Status after mutiple Thread Exec	pthread_mutex_t StatusMutex;	pthread_cond_t ConnectingCond; 	public:	TThread * ThreadQue[MAXTHREADS];	TLog * plog; //Loginfo relate to Task	TUrl * u;	ThreadFunc fn;	#ifdef USE_QTpublic slots:	void RefreshDisplay();#endif#ifdef USE_QTpublic:		ListViews * lvs;	Message * msg;	QListView * messages;	QListView * ThreadMsgs; 	QTimer  * timer;#endif	public:	TTask(int n);	~TTask(void);//	TTaskManager * GetTaskMgr() { return TaskMgr; }		char * GetTaskName() { return Name; }	void SetTaskName(char * s) { strcpy(Name, s);}			int GetTaskPrio() { return Prio; }	void SetTaskPrio(int) {}			TaskStatus GetTaskStatus() { return ts; }	void SetTaskStatus(TaskStatus s) { ts = s; }		void SetOutFilePath( char * Path )	{		strcpy(FilePath, Path);	}		char * GetOutFilePath( void )	{		return FilePath;	}			/*********************************************************/	int CreateThread(TThread * This, ThreadFunc fn);	void JoinThread(TThread * This);		void CancelThread(TThread * This);	void ExitThread(TThread * This);	void SupendThread(TThread * This);	void ResumeThread(TThread * This);	void LockThread(TTask * This);	void UnlockThread(TTask * This);	void ThreadWaitCond(TTask * This);	void BroadcastCond(TTask * This);	/********************************************************/						 		float GetCurThreadAvgSpeed(TThread * This);	float GetTotalAvgSpeed(void);	float GetCurThreadPercent(TThread * This);	const char * GetCurThreadStatus(TThread * This);	float GetCurThreadBlkSize(TThread * This);	float GetCurThreadBytesReceived(TThread * This);	long GetTotalBytesReceived(void);	long GetAllRemoteBytesReceived(void);	long GetAllLocalBytesReceived(void);	long GetEstTime(long BytesLeft, float CurSpeed);					void SetdlStartTime(void);	void SetdlEndTime(void);	long GetTotalCostTime(void);	bool IsAllCompleted(void);	bool IsAllLoginFailed(void);	bool IsAllConnRejected(void);	bool IsAllRemoteFailed(void);	int GetThreadCnt(void) const;	int QueryAllDoneCnt(void);	int QueryConnectingCnt(void);	int QueryLoggingCnt(void);	int QueryDownloadingCnt(void);	int QueryLoginfailCnt(void);		int JoinDownloads( void );	int DeleteDownloads( void );		void InitThreads(TUrl * u, long FileSize, char * FileMode);	int ExecDownloads( ThreadFunc fn );		void SetMode(RunMode val);			int ResumeModifyFtpSingleConn(TThread * tp);	int ResumeModifyFtpConns(void); 	int ResumeModifyHttpSingleConn(TThread * tp);	int ResumeModifyHttpConns(void);	int HandleThreads(ThreadFunc fn);	void DoInterface();	void TerminateThreads(void);};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -