回调函数
int CALLBACK SynwaySipEventCallback(osip_event_t* pEvent,int flag)
SynwaySipEventCallback 是一个 SIP 事件回调函数,主要用于处理 SIP 事务的生命周期管理、路由维护、呼叫统计和资源回收
核心功能:
1. 事件分类处理
if (flag < 4) // 超时事件
else if (flag >3 && flag <8) // 普通事件
else if(flag == 8) // 检查事件
2. 路由表维护
for (iter = g_mpSipRoute[workerid].begin(); iter != g_mpSipRoute[workerid].end();)
{
// 删除超时或状态异常的路由项
}
条件触发:当呼叫状态为 VOIP_CANCELLED、VOIP_COMPLETED 或 RTP 超时(无数据)时,删除路由项。
资源释放:调用 FreeRouteResource 和 BreakRTPFwdForRouteItem 释放内存和 RTP 连接
3. 呼叫统计与资源监控
统计维度:总呼叫数、成功呼叫数、当前活动呼叫数。
资源限制:根据 ntotalin 和 ntotalout 触发呼叫限制命令(如 SendCallLimitCmdtoNet
4. RTP 连接管理
if (nRTPCount == pSipRouteItem->dwRecvRtpCount)
{
pSipRouteItem->dwWaitRtpTime++;
// 超时则断开连接
}
检测机制:每 5 秒检查 RTP 数据是否变化,超时后释放资源。
异常处理:RTP 资源缺失时,根据配置延迟释放路由项
5. 消息路由与转发
result = SipMessageTranslate(..., &nOutBoundPort, ...);
消息翻译:将 SIP 消息转换为目标地址和端口。
发送策略:根据 szOutBoundAddr 是否为空,决定使用配置地址或协议栈自动路由

最低0.47元/天 解锁文章
718

被折叠的 条评论
为什么被折叠?



