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

📄 ospusageind.c

📁 mgcp协议源代码。支持多种编码:g711
💻 C
📖 第 1 页 / 共 4 页
字号:
                }                else                {                    ospvErrCode = OSPC_ERR_XML_NO_ATTR;                }            }        }    }    if(ospvErrCode == OSPC_ERR_NO_ERROR)    {        /* Build multiple usage ind if there are more than one */        for(usage = (OSPTUSAGEIND *)OSPPListFirst(ospvUsageInd);            (ospvErrCode == OSPC_ERR_NO_ERROR) &&            (usage != OSPC_OSNULL);            usage = (OSPTUSAGEIND *)OSPPListNext(ospvUsageInd, usage))        {            /* create the usage element */            usgindelem = OSPPXMLElemNew(OSPPMsgGetElemName(ospeElemUsageInd), "");            if (usgindelem == OSPC_OSNULL)            {                ospvErrCode = OSPC_ERR_XML_NO_ELEMENT;            }            /* now add the attributes to the parent -- in this case the component id             */            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                attr = OSPPXMLAttrNew((const unsigned char *)OSPPMsgGetAttrName(ospeAttrComponentId),                     (OSPPUsageIndHasComponentId(usage))?(const unsigned char *)(usage->ospmUsageIndComponentId): (const unsigned char *)"NULL");                if (attr == OSPC_OSNULL)                {                    ospvErrCode = OSPC_ERR_XML_NO_ATTR;                }            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddAttr(usgindelem, attr);                attr = OSPC_OSNULL;            }            /* now add the children - start with timestamp */            if ((ospvErrCode == OSPC_ERR_NO_ERROR) && OSPPUsageIndHasTimestamp(usage))            {                ospvErrCode = OSPPMsgTimeToElement(OSPPUsageIndGetTimestamp(usage),                    (const unsigned char *)OSPPMsgGetElemName(ospeElemTimestamp), &subelem);            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(usgindelem, subelem);                subelem = OSPC_OSNULL;            }            /* add role  */            if ((ospvErrCode == OSPC_ERR_NO_ERROR) && OSPPUsageIndHasRole(usage))            {                ospvErrCode = OSPPMsgRoleToElement(OSPPUsageIndGetRole(usage),                    (const unsigned char *) OSPPMsgGetElemName(ospeElemRole), &subelem);                if (ospvErrCode == OSPC_ERR_NO_ERROR)                {                    OSPPXMLElemAddChild(usgindelem, subelem);                    subelem = OSPC_OSNULL;                }            }            /* add the transaction ID */            if ((ospvErrCode == OSPC_ERR_NO_ERROR) && OSPPUsageIndHasTransactionId(usage))            {                len = sizeof(OSPTTRXID);                trxid = OSPPUsageIndGetTransactionId(usage);                ospvErrCode = OSPPMsgTXToElement(trxid,                     (const unsigned char *)OSPPMsgGetElemName(ospeElemTransId), &subelem);                if (ospvErrCode == OSPC_ERR_NO_ERROR)                {                    OSPPXMLElemAddChild(usgindelem, subelem);                    subelem = OSPC_OSNULL;                }            }            /* add the call ID */            if ((ospvErrCode == OSPC_ERR_NO_ERROR) && OSPPUsageIndHasCallId(usage))            {                ospvErrCode = OSPPCallIdToElement(OSPPUsageIndGetCallId(usage),                    &subelem, isbase64);            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(usgindelem, subelem);                subelem = OSPC_OSNULL;            }            /* add the source number */            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                subelem = OSPPXMLElemNew(OSPPMsgGetElemName(ospeElemSrcInfo),                    (const char *)OSPPUsageIndGetSourceNumber(usage));                if (subelem == OSPC_OSNULL)                {                    ospvErrCode = OSPC_ERR_XML_NO_ELEMENT;                }            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                attr = OSPPXMLAttrNew((const unsigned char *)OSPPMsgGetAttrName(ospeAttrType),                     (const unsigned char *)"e164");                if (attr == OSPC_OSNULL)                {                    ospvErrCode = OSPC_ERR_XML_NO_ATTR;                }            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddAttr(subelem, attr);                attr = OSPC_OSNULL;            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(usgindelem, subelem);                subelem = OSPC_OSNULL;            }            /* add the source alternates */            if ((ospvErrCode == OSPC_ERR_NO_ERROR) &&                 OSPPUsageIndHasSourceAlt(usage))            {                for (altinfo = (OSPTALTINFO *)OSPPUsageIndFirstSourceAlt(usage);                    ((altinfo != (OSPTALTINFO *)OSPC_OSNULL) && (ospvErrCode == OSPC_ERR_NO_ERROR));                    altinfo = (OSPTALTINFO *)OSPPUsageIndNextSourceAlt(usage, altinfo))                {                    ospvErrCode = OSPPAltInfoToElement(altinfo, &subelem, ospeElemSrcAlt);                    if (ospvErrCode == OSPC_ERR_NO_ERROR)                    {                        OSPPXMLElemAddChild(usgindelem, subelem);                        subelem = OSPC_OSNULL;                    }                }            }            /* add the destination number */            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                subelem = OSPPXMLElemNew(OSPPMsgGetElemName(ospeElemDestInfo),                    (const char *)OSPPUsageIndGetDestNumber(usage));                if (subelem == OSPC_OSNULL)                {                    ospvErrCode = OSPC_ERR_XML_NO_ELEMENT;                }            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                attr = OSPPXMLAttrNew((const unsigned char *)OSPPMsgGetAttrName(ospeAttrType),                     (const unsigned char *)"e164");                if (attr == OSPC_OSNULL)                {                    ospvErrCode = OSPC_ERR_XML_NO_ATTR;                }            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddAttr(subelem, attr);                attr = OSPC_OSNULL;            }            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(usgindelem, subelem);                subelem = OSPC_OSNULL;            }            /* add the destination alternates */            if ((ospvErrCode == OSPC_ERR_NO_ERROR) &&                 OSPPUsageIndHasDestinationAlt(usage))            {                for (altinfo = (OSPTALTINFO *)OSPPUsageIndFirstDestinationAlt(usage);                    ((altinfo != (OSPTALTINFO *)OSPC_OSNULL) && (ospvErrCode == OSPC_ERR_NO_ERROR));                    altinfo = (OSPTALTINFO *)OSPPUsageIndNextDestinationAlt(usage, altinfo))                {                    ospvErrCode = OSPPAltInfoToElement(altinfo, &subelem, ospeElemDestAlt);                    if (ospvErrCode == OSPC_ERR_NO_ERROR)                    {                        OSPPXMLElemAddChild(usgindelem, subelem);                        subelem = OSPC_OSNULL;                    }                }            }            /* add usage detail (if appropriate) */            if ((ospvErrCode == OSPC_ERR_NO_ERROR) && OSPPUsageIndHasDuration(usage))            {                ospvErrCode = OSPPUsageToElement(                    (unsigned)OSPPUsageIndGetDuration(usage), &subelem);                if (ospvErrCode == OSPC_ERR_NO_ERROR)                {                    OSPPXMLElemAddChild(usgindelem, subelem);                    subelem = OSPC_OSNULL;                }            }            /* now add the transnexus extensions (if available) */            if (ospvErrCode == OSPC_ERR_NO_ERROR)            {                if (OSPPUsageIndHasTNCustId(usage))                {                    ospvErrCode = OSPPMsgNumToElement(                         OSPPUsageIndGetTNCustId(usage),                        (const unsigned char *)OSPPMsgGetElemName(ospeElemTNCustId),                        &subelem);                    if (ospvErrCode == OSPC_ERR_NO_ERROR)                    {                        OSPPXMLElemAddChild(usgindelem, subelem);                        subelem = OSPC_OSNULL;                        if (OSPPUsageIndHasTNDeviceId(usage))                        {                            ospvErrCode = OSPPMsgNumToElement(                                 OSPPUsageIndGetTNDeviceId(usage),                                (const unsigned char *)OSPPMsgGetElemName(ospeElemTNDeviceId),                                &subelem);                            if (ospvErrCode == OSPC_ERR_NO_ERROR)                            {                                OSPPXMLElemAddChild(usgindelem, subelem);                                subelem = OSPC_OSNULL;                            }                        }                    }                }            }            /* Failure reason */            if(ospvErrCode == OSPC_ERR_NO_ERROR)            {                if(OSPPUsageIndHasTNFailReason(usage))                {                    ospvErrCode = OSPPMsgNumToElement(                         OSPPUsageIndGetTNFailReason(usage),                        (const unsigned char *)OSPPMsgGetElemName(ospeElemTNFailReason),                        &subelem);                    if(ospvErrCode == OSPC_ERR_NO_ERROR)                    {                        OSPPXMLElemAddChild(usgindelem, subelem);                        subelem = OSPC_OSNULL;                    }                }            }            /* Statistics */            if(ospvErrCode == OSPC_ERR_NO_ERROR)            {                if(OSPPUsageIndHasTNStatistics(usage))                {                    ospvErrCode = OSPPStatisticsToElement(usage->ospmUsageIndTNStats, &subelem);                    if(ospvErrCode == OSPC_ERR_NO_ERROR)                    {                        OSPPXMLElemAddChild(usgindelem, subelem);                        subelem = OSPC_OSNULL;                    }                }            }            if(ospvErrCode == OSPC_ERR_NO_ERROR)            {                OSPPXMLElemAddChild(*ospvElem, usgindelem);                usgindelem = OSPC_OSNULL;            }        } /* end for */    }    /* if for any reason we found an error - destroy any elements created */    if (ospvErrCode != OSPC_ERR_NO_ERROR)    {        if(*ospvElem != OSPC_OSNULL)        {            OSPPXMLElemDelete(ospvElem);        }    }    if(usgindelem != OSPC_OSNULL)    {        OSPPXMLElemDelete(&usgindelem);    }    if(subelem != OSPC_OSNULL)    {        OSPPXMLElemDelete(&subelem);    }    if(attr != OSPC_OSNULL)    {        OSPPXMLAttrDelete(&attr);    }    return(ospvErrCode);}/**//*-----------------------------------------------------------------------* * OSPPUsageIndAddDestinationAlt() - add a destination alt to list a list *-----------------------------------------------------------------------*/voidOSPPUsageIndAddDestinationAlt(    OSPTUSAGEIND *ospvUsageInd,   /* authorisation indication */    OSPTALTINFO *ospvAltInfo      /* alt info to add */    ){    if((ospvUsageInd != OSPC_OSNULL) &&        (ospvAltInfo != OSPC_OSNULL))    {        OSPPListAppend(&(ospvUsageInd->ospmUsageIndDestinationAlternate), (ospvAltInfo));    }    return;}/*-----------------------------------------------------------------------* * OSPPUsageIndHasMessageId() - is the message id set ? *-----------------------------------------------------------------------*/unsigned                   /* returns non-zero if message id is set */OSPPUsageIndHasMessageId(    OSPTUSAGEIND *ospvUsageInd){  return (ospvUsageInd->ospmUsageIndMessageId != OSPC_OSNULL);}/*-----------------------------------------------------------------------* * OSPPUsageIndGetMessageId() - returns a new copy of the message id. *-----------------------------------------------------------------------*/unsigned char  *OSPPUsageIndGetMessageId(    OSPTUSAGEIND *ospvUsageInd){    unsigned char   *messagestring   = OSPC_OSNULL;    int             len                = 0;    if (OSPPUsageIndHasMessageId(ospvUsageInd))    {        len = OSPM_STRLEN((const char *)ospvUsageInd->ospmUsageIndMessageId);        OSPM_MALLOC(messagestring, unsigned char, len + 1);        OSPM_MEMSET(messagestring, 0, len + 1);        OSPM_MEMCPY(messagestring, ospvUsageInd->ospmUsageIndMessageId, len);    }    return messagestring;}

⌨️ 快捷键说明

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