📄 dload.h
字号:
/***********************************************************************
* File name: Dload.h
* Author: Version: Date: likun
* Description:
*
* Others:
* Function List:
* 1. ....
* History:
* 1. Date:2008-3-21
* Author:likun create this file
* Modification:
* 2. ...
*************************************************************************/
#ifndef __DLOAD_H__
#define __DLOAD_H__
#include "hos.h"
#ifdef __cplusplus
extern "C" {
#endif
extern MsgHeader;
/*同时下载最大任务数*/
#define DLOAD_MAX_TASK 5
#define DLOAD_MAX_TREADNUM 10
#define DLOAD_MAX_HOSTNAME 256
/*存放下载任务记录文件的目录,用于断点续传*/
#define DLOAD_RECORD_FILE "/mnt/"
/*DLOAD模块一个消息的最大长度*/
#define DLOAD_MSG_MAXSIZE 1024
/*DLOAD模块消息队列的最大消息数码*/
#define DLOAD_MSG_MAXNUM 256
/*同步消息超时时间*/
#define DLOAD_MSG_TIMEOUT 1000
/*文件名长度*/
#define DLOAD_FILENAME_LEN 256
/*url长度*/
#define DLOAD_URL_LEN 256
/*file path 长度*/
#define DLOAD_PATH_LEN 256
/*username*/
#define DLOAD_USERNAME_LEN 100
/*password*/
#define DLOAD_PASSWD_LEN 20
#define DLOAD_INST_ID 0
#define DLOAD_PRINT(fmt,arg...) {\
fprintf(stderr,"\r\n%s:%04d, "fmt, __FILE__, __LINE__, ##arg);\
}
typedef int DLoadTaskHandle;/*下载协议相关的信息,具体内容由协议生成*/
typedef void * HDLProtocolHandle;
/*断点续传信息的文件扩展名*/
#define DLOAD_BTBRFILE_EXT "btbrfile"
//#define DLOAD_FILE_MAGICCODE "likun716"
typedef enum tagDLOAD_PROTOCOL
{
DLOAD_PROTOCOL_HTTP,
DLOAD_PROTOCOL_FTP,
DLOAD_PROTOCOL_BT,
DLOAD_PROTOCOL_BULL
} DLOAD_PROTOCOL;
typedef enum tagDLoadTaskStat
{
DLOAD_STAT_DOING, /*正在下载*/
DLOAD_STAT_PAUSE, /*暂停下载*/
DLOAD_STAT_WAIT, /*等待下载*/
DLOAD_STAT_FINISH, /*下载完成*/
DLOAD_STAT_UNREACH, /*服务器不可达*/
DLOAD_STAT_BUTT
}DLoadTaskStat;
/* likun 下载任务信息结构体,对外提供*/
typedef struct tagDLoadTaskPubInfo
{
DLoadTaskHandle hDloadTask;
//下载类型
//url
//文件ID
//char acSrcUrl[256]; /*从服务端获取的url信息*/
int RetCode;
char acFileName[DLOAD_FILENAME_LEN]; /*文件名*/
int FileSize; /*文件大小*/
int SizeGet; /*已下载*/
float rate; /*下载速度*/
float scale; /*下载进度*/
DLoadTaskStat CurStat; /*状态*/
}DLoadTaskPubInfo;
typedef struct tagfnDLoadPlug
{
int (*fnStartTask)(void *);
int (*fnPauseTask)(void *);
int (*fnResumeTask)(void *);
int (*fnDelTask)(void*);
int (*fnFinishTask)(void*);
int (*fnUninitProtocolInfo)(void*);
int (*fnGetTaskInfo)(void *, DLoadTaskPubInfo *);
}fnDLoadPlug;
typedef enum tagDLoadErrCode
{
DLOAD_ERR_ = ERR_DEF(MODULEID_DLOAD,1),
}DLoadErrCode;
/*内部消息定义*/
typedef enum tagDLoadAreaMsgDef
{
DLOAD_SYNC_DLOAD_ADDTASK = MSG_DEF(MODULEID_DLOAD,1),
DLOAD_ASYN_DLOAD_CTRLCMD = MSG_DEF(MODULEID_DLOAD,2),
DLOAD_SYNC_DLOAD_GETFIRSTTASK_INFO = MSG_DEF(MODULEID_DLOAD,3),
DLOAD_SYNC_DLOAD_GETTASK_INFO_BYHANDLE = MSG_DEF(MODULEID_DLOAD,4),
DLOAD_SYNC_DLOAD_GETNEXTTASK_INFO_BYHANDLE = MSG_DEF(MODULEID_DLOAD,5),
DLOAD_SYNC_DLOAD_GET_TASKNUM = MSG_DEF(MODULEID_DLOAD,6),
/*likun add for test*/
DLOAD_SYNC_DLOAD_ADDTASK_TEST = MSG_DEF(MODULEID_DLOAD,7),
}DLoadAreaMsgDef;
typedef enum tagDLoadCtrCmd
{
DLOAD_CMD_START,
DLOAD_CMD_PAUSE,
DLOAD_CMD_RESUME,
DLOAD_CMD_DEL,
}DLoadCtrCmd;
/*用于发送控制命令的消息结构体*/
typedef struct tagDLoadMsgCtrCmd
{
MsgHeader stMsgHdl;
DLoadTaskHandle hTaskHandle;
DLoadCtrCmd cmd;
}DLoadMsgCtrCmd;
typedef struct tagDLoadNewTask
{
int ProtocolType; /*下载协议类型*/
char FileID[20]; /*文件唯一标识*/
}DLoadNewTask;
typedef struct tagDLoadMsgAddATask
{
MsgHeader stMsgHdl;
DLoadNewTask stNewTask;
}DLoadMsgAddATask;
/*likun add for test*/
typedef struct tagDLoadMsgAddATaskTest
{
MsgHeader stMsgHdl;
char url[DLOAD_URL_LEN];
}DLoadMsgAddATaskTest;
typedef struct tagDLoadUrlInfo
{
int protocolType;
int threadNum;
char FilePath[DLOAD_PATH_LEN];
char DownloadUrl[DLOAD_URL_LEN];
char Account[DLOAD_USERNAME_LEN];
char Password[DLOAD_PASSWD_LEN];
}DLoadUrlInfo;
typedef struct tagDLoadMsgTaskPubInfo
{
MsgHeader stMsgHdl;
DLoadTaskPubInfo pubInfo;
}DLoadMsgTaskPubInfo;
typedef struct tagDLoadMsgTaskNum
{
MsgHeader stMsgHdl;
int taskNum;
}DLoadMsgTaskNum;
typedef struct tagDLoadMsgGetInfo
{
MsgHeader stMsgHdl;
DLoadTaskHandle hTaskHandle;
}DLoadMsgGetInfo;
/*下载管理内部维护的下载任务信息结构体定义*/
typedef struct tagDLoadTaskPrivateInfo
{
DLoadTaskHandle hDloadTaskHandle;
char url[DLOAD_URL_LEN];
DLoadTaskStat CurStat; /*状态*/
fnDLoadPlug fnPlug; /*根据下载协议类型注册的相应操作函数*/
HDLProtocolHandle pProtocolInfo; /*协议相关的信息指针,文件下载完成或者删除下载任务时需要释放*/
}DLoadTaskPrivateInfo;
#ifdef _cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -