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

📄 dload_interface.c

📁 linux下http和ftp下载工具
💻 C
字号:
/***********************************************************************
* File name: dload.c
* Author: Version: Date: likun
* Description: 下载模块的的接口实现
*
* Others:
* Function List:
* 1. ....
* History:
* 1. Date:2008-3-31
* Author:likun create this file
* Modification:
* 2. ...
*************************************************************************/
#include "hos.h"
#include "Dload.h"
#include "Dload_interface.h"

#ifdef __cplusplus
extern "C" {
#endif

int DLoadAddNewTask(DLoadNewTask *pNewTask)
{
    DLoadMsgAddATask addNewTask;
    addNewTask.stMsgHdl.ulDstInst = 0;
    addNewTask.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    strncpy(addNewTask.stNewTask.FileID , pNewTask->FileID, 20);
    addNewTask.stNewTask.ProtocolType = pNewTask->ProtocolType;
    addNewTask.stMsgHdl.ulMsgType = DLOAD_SYNC_DLOAD_ADDTASK;
    /* likun */
    addNewTask.stMsgHdl.ulSrcModID = MODULEID_BUTT;
    addNewTask.stMsgHdl.ulSrcInst = 0;

    return HOS_MsgSnd(NULL,(TMsg *)&addNewTask, sizeof(DLoadMsgAddATask));
}

int DLoadStarTask(DLoadTaskHandle hTaskHandle)
{
    /*likun 增加消息的源*/
    DLoadMsgCtrCmd startCmd;
    startCmd.hTaskHandle = hTaskHandle;
    startCmd.cmd = DLOAD_CMD_START;
    startCmd.stMsgHdl.ulDstInst = 0;
    startCmd.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    startCmd.stMsgHdl.ulMsgType = DLOAD_ASYN_DLOAD_CTRLCMD;
    /* likun */
    startCmd.stMsgHdl.ulSrcModID = MODULEID_BUTT;
    startCmd.stMsgHdl.ulSrcInst = 0;
    return HOS_MsgSnd(NULL,(TMsg *)&startCmd, sizeof(DLoadMsgCtrCmd));
}

int DLoadPauseTask(DLoadTaskHandle hTaskHandle)
{
    /*likun 增加消息的源*/
    DLoadMsgCtrCmd startCmd;
    startCmd.hTaskHandle = hTaskHandle;
    startCmd.cmd = DLOAD_CMD_PAUSE;
    startCmd.stMsgHdl.ulDstInst = 0;
    startCmd.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    startCmd.stMsgHdl.ulMsgType = DLOAD_ASYN_DLOAD_CTRLCMD;
    /* likun */
    startCmd.stMsgHdl.ulSrcModID = MODULEID_BUTT;
    startCmd.stMsgHdl.ulSrcInst = 0;
    
    return HOS_MsgSnd(NULL,(TMsg *)&startCmd, sizeof(DLoadMsgCtrCmd));
}

int DLoadResumeTask(DLoadTaskHandle hTaskHandle)
{
    /*likun 增加消息的源*/
    DLoadMsgCtrCmd startCmd;
    startCmd.hTaskHandle = hTaskHandle;
    startCmd.cmd = DLOAD_CMD_RESUME;
    startCmd.stMsgHdl.ulDstInst = 0;
    startCmd.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    startCmd.stMsgHdl.ulMsgType = DLOAD_ASYN_DLOAD_CTRLCMD;
    /* likun */
    startCmd.stMsgHdl.ulSrcModID = MODULEID_BUTT;
    startCmd.stMsgHdl.ulSrcInst = 0;
    return HOS_MsgSnd(NULL,(TMsg *)&startCmd, sizeof(DLoadMsgCtrCmd));
}


int DLoadDeleteTask(DLoadTaskHandle hTaskHandle)
{
    /*likun 增加消息的源*/
    DLoadMsgCtrCmd startCmd;
    startCmd.hTaskHandle = hTaskHandle;
    startCmd.cmd = DLOAD_CMD_DEL;
    startCmd.stMsgHdl.ulDstInst = 0;
    startCmd.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    startCmd.stMsgHdl.ulMsgType = DLOAD_ASYN_DLOAD_CTRLCMD;
    /* likun */
    startCmd.stMsgHdl.ulSrcModID = MODULEID_BUTT;
    startCmd.stMsgHdl.ulSrcInst = 0;
    return HOS_MsgSnd(NULL,(TMsg *)&startCmd, sizeof(DLoadMsgCtrCmd));
}

int DLoadGetTaskNum(HMSGQ hMsgQ,int *total)
{    
    TMsg SndMsg;
    int ret;
    DLoadMsgTaskNum RcvMsg;   

    if(!hMsgQ || !total)
    {
        return -1;
    } 
    
    memset(&SndMsg, 0, sizeof(TMsg));
    memset(&RcvMsg, 0, sizeof(DLoadMsgTaskNum));
    SndMsg.stMsgHdl.ulDstInst = 0;
    SndMsg.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    SndMsg.stMsgHdl.ulMsgType = DLOAD_SYNC_DLOAD_GET_TASKNUM;
    SndMsg.stMsgHdl.usSeq = 0;
    ret = HOS_MsgSendAndRcv(hMsgQ, (TMsg *)&SndMsg, sizeof(TMsg), 
            (TMsg *)&RcvMsg, sizeof(DLoadMsgTaskNum), DLOAD_MSG_TIMEOUT);
    if(ret>0)
        *total = RcvMsg.taskNum;
    else
        return -1;
    
    return 0;  
}


DLoadRetCode DLoadGetFirstTaskInfo(HMSGQ hMsgQ, DLoadTaskPubInfo *para)
{
    TMsg SndMsg;
    int ret;
    int retcode;
    DLoadMsgTaskPubInfo  RcvMsg;        

    if(!hMsgQ || !para)
    {
        return -1;
    } 

    memset(&SndMsg, 0, sizeof(TMsg));
    memset(&RcvMsg, 0, sizeof(DLoadMsgTaskPubInfo));
    SndMsg.stMsgHdl.ulDstInst = 0;
    SndMsg.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    SndMsg.stMsgHdl.ulMsgType = DLOAD_SYNC_DLOAD_GETFIRSTTASK_INFO;
    SndMsg.stMsgHdl.usSeq = 0;
    ret = HOS_MsgSendAndRcv(hMsgQ, (TMsg *)&SndMsg, sizeof(TMsg), 
            (TMsg *)&RcvMsg, sizeof(DLoadMsgTaskPubInfo), DLOAD_MSG_TIMEOUT);
    if(ret>0)
    {
        if(0==RcvMsg.pubInfo.RetCode)
            memcpy(para, &(RcvMsg.pubInfo), sizeof(DLoadTaskPubInfo));
        else
            return DLOAD_RETCODE_NOTASK;
    }
    else
        return DLOAD_RETCODE_GETFAIL;
    
    return DLOAD_RETCODE_GETSUCC;  
}

int DLoadGetTaskInfoByHandle(HMSGQ hMsgQ, DLoadTaskHandle hDloadTask, DLoadTaskPubInfo *para)
{
    int ret;
    DLoadMsgGetInfo SndMsg;
    DLoadMsgTaskPubInfo  RcvMsg;        

    if(!hMsgQ || !para)
    {
        return -1;
    } 
    SndMsg.stMsgHdl.ulDstInst = 0;
    SndMsg.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    SndMsg.stMsgHdl.ulMsgType = DLOAD_SYNC_DLOAD_GETTASK_INFO_BYHANDLE;
    SndMsg.stMsgHdl.usSeq = 0;
    SndMsg.hTaskHandle = hDloadTask;
    ret = HOS_MsgSendAndRcv(hMsgQ, (TMsg *)&SndMsg, sizeof(DLoadMsgGetInfo), 
            (TMsg *)&RcvMsg, sizeof(DLoadMsgTaskPubInfo), DLOAD_MSG_TIMEOUT);
    if(ret>0)
        memcpy(para, &(RcvMsg.pubInfo), sizeof(DLoadTaskPubInfo));
    else
        return -1;
    
    return 0;  
}

DLoadRetCode DLoadGetNextTaskInfoByHandle(HMSGQ hMsgQ, DLoadTaskHandle hDloadTask, DLoadTaskPubInfo *para)
{
    int ret;
    DLoadMsgGetInfo SndMsg;
    DLoadMsgTaskPubInfo  RcvMsg;        

    if(!hMsgQ || !para)
    {
        return -1;
    } 
    SndMsg.stMsgHdl.ulDstInst = 0;
    SndMsg.stMsgHdl.ulDstModID = MODULEID_DLOAD;
    SndMsg.stMsgHdl.ulMsgType = DLOAD_SYNC_DLOAD_GETNEXTTASK_INFO_BYHANDLE;
    SndMsg.stMsgHdl.usSeq = 0;
    SndMsg.hTaskHandle = hDloadTask;
    ret = HOS_MsgSendAndRcv(hMsgQ, (TMsg *)&SndMsg, sizeof(DLoadMsgGetInfo), 
            (TMsg *)&RcvMsg, sizeof(DLoadMsgTaskPubInfo), DLOAD_MSG_TIMEOUT);
    if(ret>0)
    {
        if(0==RcvMsg.pubInfo.RetCode)
            memcpy(para, &(RcvMsg.pubInfo), sizeof(DLoadTaskPubInfo));
        else
            return DLOAD_RETCODE_TAIL;
    }
    else
        return DLOAD_RETCODE_GETFAIL;
    return DLOAD_RETCODE_GETSUCC;  
}


#ifdef _cplusplus
}
#endif

⌨️ 快捷键说明

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