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

📄 ospstatistics.c

📁 mgcp协议源代码。支持多种编码:g711
💻 C
📖 第 1 页 / 共 2 页
字号:
        *ospvElem = OSPPXMLElemNew(OSPPMsgGetElemName(ospeElemTNOneWayDelay), "");        if(*ospvElem == OSPC_OSNULL)        {            errorcode = OSPC_ERR_XML_NO_ELEMENT;        }        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)            {                OSPPXMLElemAddAttr(*ospvElem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }        }            }    /* Minimum */    if(errorcode== OSPC_ERR_NO_ERROR)    {        errorcode = OSPPMsgNumToElement(OSPPStatisticsGetOneWayMinimum(ospvStatistics),            (const unsigned char *)OSPPMsgGetElemName(ospeElemTNMinimum), &elem);        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(elem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }            if (errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* Mean */    if(errorcode== OSPC_ERR_NO_ERROR)    {        errorcode = OSPPMsgNumToElement(OSPPStatisticsGetOneWayMean(ospvStatistics),            (const unsigned char *)OSPPMsgGetElemName(ospeElemTNMean), &elem);        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(elem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }            if (errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* Variance */    if(errorcode== OSPC_ERR_NO_ERROR)    {        errorcode = OSPPMsgFloatToElement(OSPPStatisticsGetOneWayVariance(ospvStatistics),            (const unsigned char *)OSPPMsgGetElemName(ospeElemTNVariance), &elem);        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(elem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }            if (errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* Samples */    if(errorcode== OSPC_ERR_NO_ERROR)    {        errorcode = OSPPMsgNumToElement(OSPPStatisticsGetOneWaySamples(ospvStatistics),            (const unsigned char *)OSPPMsgGetElemName(ospeElemTNSamples), &elem);        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(elem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }            if (errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* clean up */    if(attr != OSPC_OSNULL)    {        OSPM_FREE(attr);        attr = OSPC_OSNULL;    }    if(elem != OSPC_OSNULL)    {        OSPM_FREE(elem);        elem = OSPC_OSNULL;    }    return errorcode;}/* RoundTrip to Element */intOSPPStatisticsRoundTripToElement(    OSPTSTATISTICS  *ospvStatistics,    OSPTXMLELEM     **ospvElem){    int         errorcode   = OSPC_ERR_NO_ERROR;    OSPTXMLELEM *elem       = OSPC_OSNULL;    OSPTXMLATTR *attr       = OSPC_OSNULL;    if(ospvElem == OSPC_OSNULL)    {        errorcode = OSPC_ERR_XML_NO_ELEMENT;    }    if(ospvStatistics == OSPC_OSNULL)    {        errorcode = OSPC_ERR_DATA_NO_STATS;    }    if(errorcode == OSPC_ERR_NO_ERROR)    {        *ospvElem = OSPPXMLElemNew(OSPPMsgGetElemName(ospeElemTNRoundTripDelay), "");        if(*ospvElem == OSPC_OSNULL)        {            errorcode = OSPC_ERR_XML_NO_ELEMENT;        }        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)            {                OSPPXMLElemAddAttr(*ospvElem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }        }            }    /* Minimum */    if(errorcode== OSPC_ERR_NO_ERROR)    {        errorcode = OSPPMsgNumToElement(OSPPStatisticsGetRoundTripMinimum(ospvStatistics),            (const unsigned char *)OSPPMsgGetElemName(ospeElemTNMinimum), &elem);        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(elem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }            if (errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* Mean */    if(errorcode== OSPC_ERR_NO_ERROR)    {        errorcode = OSPPMsgNumToElement(OSPPStatisticsGetRoundTripMean(ospvStatistics),            (const unsigned char *)OSPPMsgGetElemName(ospeElemTNMean), &elem);        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(elem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }            if (errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* Variance */    if(errorcode== OSPC_ERR_NO_ERROR)    {        errorcode = OSPPMsgFloatToElement(OSPPStatisticsGetRoundTripVariance(ospvStatistics),            (const unsigned char *)OSPPMsgGetElemName(ospeElemTNVariance), &elem);        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(elem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }            if (errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* Samples */    if(errorcode== OSPC_ERR_NO_ERROR)    {        errorcode = OSPPMsgNumToElement(OSPPStatisticsGetRoundTripSamples(ospvStatistics),            (const unsigned char *)OSPPMsgGetElemName(ospeElemTNSamples), &elem);        if(errorcode == OSPC_ERR_NO_ERROR)        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(elem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }            if (errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* clean up */    if(attr != OSPC_OSNULL)    {        OSPM_FREE(attr);        attr = OSPC_OSNULL;    }    if(elem != OSPC_OSNULL)    {        OSPM_FREE(elem);        elem = OSPC_OSNULL;    }    return errorcode;}/* Report statistics for this transaction. */intOSPPStatisticsReportUsage(    OSPTSTATISTICS  **ospvStatistics,           /* In - pter to place for stats                                                        struct */    unsigned        ospvLossPacketsSent,        /* In  */    signed          ospvLossFractionSent,       /* In  */    unsigned        ospvLossPacketsReceived,    /* In  */    signed          ospvLossFractionReceived    /* In  */){    int             errorcode   = OSPC_ERR_NO_ERROR;    /* if LossFractionSent and received vars are negative, no statistics are      * reported.      * Just return with no error     */    if(ospvLossFractionSent >= 0)    {        if(*ospvStatistics == OSPC_OSNULL)        {            *ospvStatistics = OSPPStatisticsNew();            if(*ospvStatistics == OSPC_OSNULL)            {                errorcode = OSPC_ERR_TRAN_STATS_NEW_FAIL;            }        }        if(errorcode == OSPC_ERR_NO_ERROR)        {            OSPPStatisticsSetSentStatistics(*ospvStatistics,                 ospvLossPacketsSent,                ospvLossFractionSent);        }    }    if(errorcode == OSPC_ERR_NO_ERROR)    {        if(ospvLossFractionReceived >= 0)        {            if(*ospvStatistics == OSPC_OSNULL)            {                *ospvStatistics = OSPPStatisticsNew();                if(*ospvStatistics == OSPC_OSNULL)                {                    errorcode = OSPC_ERR_TRAN_STATS_NEW_FAIL;                }            }            if(errorcode == OSPC_ERR_NO_ERROR)            {                OSPPStatisticsSetReceivedStatistics(*ospvStatistics,                     ospvLossPacketsReceived,                    ospvLossFractionReceived);            }        }    }    if((errorcode != OSPC_ERR_NO_ERROR) &&        (*ospvStatistics != OSPC_OSNULL))    {        OSPPStatisticsDelete(ospvStatistics);    }    return errorcode;}/* Set Received statistics */voidOSPPStatisticsSetReceivedStatistics(    OSPTSTATISTICS  *ospvStatistics,    unsigned        ospvLossPacketsReceived,    signed          ospvLossFractionReceived){    if(ospvStatistics != OSPC_OSNULL)    {        ospvStatistics->ospmHasReceivedStats = OSPC_TRUE;        ospvStatistics->ospmLossPacketsReceived = ospvLossPacketsReceived;        ospvStatistics->ospmLossFractionReceived = ospvLossFractionReceived;    }    return;}/* Set Sent statistics */voidOSPPStatisticsSetSentStatistics(    OSPTSTATISTICS  *ospvStatistics,    unsigned        ospvLossPacketsSent,    signed          ospvLossFractionSent){    if(ospvStatistics != OSPC_OSNULL)    {        ospvStatistics->ospmHasSentStats = OSPC_TRUE;        ospvStatistics->ospmLossPacketsSent = ospvLossPacketsSent;        ospvStatistics->ospmLossFractionSent = ospvLossFractionSent;    }    return;}/* Create xml element from statistics structure */intOSPPStatisticsToElement(    OSPTSTATISTICS  *ospvStatistics,    OSPTXMLELEM     **ospvElem){    int             errorcode   = OSPC_ERR_NO_ERROR;    OSPTXMLELEM     *elem       = OSPC_OSNULL;    OSPTXMLATTR     *attr       = OSPC_OSNULL;    if(ospvStatistics == OSPC_OSNULL)    {        errorcode = OSPC_ERR_DATA_NO_STATS;    }    if(ospvElem == OSPC_OSNULL)    {        errorcode = OSPC_ERR_XML_NO_ELEMENT;    }    if(errorcode == OSPC_ERR_NO_ERROR)    {        /* create the Statistics element as the parent */        *ospvElem = OSPPXMLElemNew(OSPPMsgGetElemName(ospeElemTNStatistics), "");        if(*ospvElem == OSPC_OSNULL)        {            errorcode = OSPC_ERR_XML_NO_ELEMENT;        }        else        {            attr = OSPPXMLAttrNew(                (const unsigned char *)OSPPMsgGetAttrName(ospeAttrCritical),                (const unsigned char *)"False");            if (attr != OSPC_OSNULL)             {                OSPPXMLElemAddAttr(*ospvElem, attr);                attr = OSPC_OSNULL;            }            else            {                errorcode = OSPC_ERR_XML_NO_ATTR;            }        }    }    /* Now add the children */    /* First LossSent */    if(errorcode == OSPC_ERR_NO_ERROR)    {        if(OSPPStatisticsHasLossSent(ospvStatistics))        {            errorcode = OSPPStatisticsLossSentToElement(ospvStatistics, &elem);            if(errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* LossReceived */    if(errorcode == OSPC_ERR_NO_ERROR)    {        if(OSPPStatisticsHasLossReceived(ospvStatistics))        {            errorcode = OSPPStatisticsLossReceivedToElement(ospvStatistics, &elem);            if(errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* OneWay */    if(errorcode == OSPC_ERR_NO_ERROR)    {        if(OSPPStatisticsHasOneWay(ospvStatistics))        {            errorcode = OSPPStatisticsOneWayToElement(ospvStatistics, &elem);            if(errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    /* RoundTrip */    if(errorcode == OSPC_ERR_NO_ERROR)    {        if(OSPPStatisticsHasRoundTrip(ospvStatistics))        {            errorcode = OSPPStatisticsRoundTripToElement(ospvStatistics, &elem);            if(errorcode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, elem);                elem = OSPC_OSNULL;            }        }    }    if(errorcode != OSPC_ERR_NO_ERROR)    {        if(*ospvElem!= OSPC_OSNULL)        {            OSPPXMLElemDelete(ospvElem);        }    }    if(elem != OSPC_OSNULL)    {        OSPPXMLElemDelete(&elem);    }    if(attr != OSPC_OSNULL)    {        OSPPXMLAttrDelete(&attr);    }    return errorcode;}

⌨️ 快捷键说明

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