📄 ospusageind.c
字号:
} 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 + -