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

📄 pssuaprofbatch.c

📁 移动流媒体同步服务器模块
💻 C
字号:
 /********************************************************************
Copyright(C), 2006, Wuhan Hongxu Information Technologies Co., Ltd.
Filename   : pssUaprofBatch.c
Description: uaprof batch program.
Author     : LiWeiBing
Version    : Initial version
Date       : 2006年12月
History    :
<author>     <time>     <version >     <desc>
********************************************************************/
#include "uaprof.h"
#include "sysdir.h"
#include "msspDefs.h"
#include "pssUaprofParser.h"

int gLogLevel = 1; /*可以配置,取值为1,2,3; 值越小打印的信息越多*/
FILE * gUaprofPrintFP = (FILE *)stdout;

int main()
{

    UaprofConfSt UaprofConf;
    int  ret;
    FILE *pFile;
    pss_uaprof_t uaprof;
    FTPLineList dirContent;
    FTPLinePtr  filePtr;
    UINT8   fileName[512]={0};
    UINT8   srcFileName[512]={0};
    UINT8   reNum=0;
    INT32 result = kNoErr;
    FTPConnectionInfo   cip;

    memset(&UaprofConf, 0, sizeof(UaprofConfSt));
    if(MSSP_FAILURE == uaprofReadConf(&UaprofConf))
    {
        UAPROF_LOG(ERR, "uaprofReadConf fail!\n");
        return(-1);
    }

    gLogLevel = UaprofConf.iLogLevel;
    UAPROF_LOG(TRACE, "gLogLevel = %d \n", gLogLevel);

    if( UaprofConf.iPrintFile )
    {
        gUaprofPrintFP = fopen("batch_errlog", "w");
        if( gUaprofPrintFP == NULL )
        {
              gUaprofPrintFP = (FILE *)stdout;
              UAPROF_LOG(ERR, "fopen batch_errlog fail!errno=%d\n", errno);
        }
    }

    /*初始化FTPCIPtr结构 */
    result = FTPInitConetentInfo(&cip,UaprofConf.caUserName,UaprofConf.caPassWd,UaprofConf.caUaprofIp,UaprofConf.iFtpPort,kSendPortMode);   /*passive没问题,port会出现无法收到数据连接消息的问题 */
    if ( result != kNoErr)
    {
        UAPROF_LOG(ERR, "FTPInitConetentInfo fail!result=%d\n", result);
        result = kErrInitConetentInfoFailed;
        return result;
    }

    /*登陆FTP服务器 */
    result = FTPOpenHost(&cip);
    if ( result != kNoErr )
    {
        UAPROF_LOG(ERR, "FTPOpenHost fail!result=%d\n", result);
        return result;
    }

    /*得到远端目录下文件列表 */
    InitLineList(&dirContent);
    result = FTPRemoteRecursiveFileList1(&cip, UaprofConf.caContentPath, &dirContent); /*采用NLST命令,保证每一行就是一个文件*/
    if ( result < 0)    /*若成功,则已经进入子目录 */
    {
        UAPROF_LOG(ERR, "FTPRemoteRecursiveFileList1 fail!result=%d\n", result);
        return result;
    }

    /*成功,则获取每个文件 */
    for ( filePtr = dirContent.first ; filePtr != NULL; filePtr =filePtr->next)
    {
        STRNCPY(fileName,filePtr->line);    /*得到文件名 */
        if (( strcmp(fileName, ".") == 0)  || (strcmp(fileName,"..")==0))
        {
            /*当前目录或者根目录 */
            continue;
        }
        /*得到本地文件名 */
        STRNCPY(srcFileName,UaprofConf.caLocalPath);
        STRNCAT(srcFileName,"/");
        STRNCAT(srcFileName,UaprofConf.caContentPath);
        STRNCAT(srcFileName,"/");
        STRNCAT(srcFileName,fileName);

        for ( reNum = 0; reNum < FTP_REGETDIR_MAX_NUM;reNum++)
        {
            result = FTPGetOneF(&cip, srcFileName, fileName, kTypeBinary); /*传输模式为kTypeBinary */
            if ( result == kNoErr )
            {
                UAPROF_LOG(TRACE, "FTPGetOneF  %s ok!\n", srcFileName);
                break;    /*若有一次成功,则退出此循环 */
            }
        }
        /*若多次尝试后还是失败,则认为获取内容失败 */
        if ( result != kNoErr )
        {
            UAPROF_LOG(ERR, "FTPGetOneF fail, file=%s, result=%d\n", srcFileName, result);
            break;
        }

        /*xml parser*/
        pFile = fopen(srcFileName, "r");
        if( pFile == NULL )
        {
            UAPROF_LOG(ERR, "fopen fail!file=%s\n", srcFileName);
            break;
        }
        ret = parsePssUaProf(&uaprof,  pFile);
        if( ret != UAPROF_PARSER_OK )
        {
            UAPROF_LOG(ERR, "parsePssUaProf fail!file=%s\n", srcFileName);
        }
        else
        {
            /*将该uaprof信息写入数据库*/
            UAPROF_LOG(TRACE, "begin insert!model=%s, stream=%s, http=%s\n", uaprof.model, uaprof.pssStreaming.streamingAccept, uaprof.pssThreeGPFileFormat.threeGPAccept);
            InsertUaprofDB(UaprofConf.caDataBaseIp, UaprofConf.iDataBasePort,  &uaprof);
        }
        fclose(pFile);
    }

    /*释放dirContent内存 */
    DisposeLineListContents(&dirContent);


    /*无论成功与否,都需要关闭控制连接,数据连接在使用结束后,就关闭了 */
    CloseDataConnection(&cip);  /*关闭数据连接 */

    /*是否需要向FTP服务器发送QUIT消息 */
    /*关闭控制连接 */
    CloseCtrlConnection(&cip);
    cip.ctrlSocket = kInvaldSocket;
    DisposeSReadlineInfo(&(cip.ctrlSrl));


    return 0;
}



⌨️ 快捷键说明

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