Sofia-SIP辅助文档十三 - Sofia SIP用户代理库 - "nta" - SIP事务模块

本文档详细介绍了Sofia-SIP的NTA模块,包括NTA对象、创建NTA代理、SIP服务器和客户端动作。NTA用于处理SIP事务、传输和消息,支持SIP服务器和客户端接口。文中讨论了NTA腿、可靠短暂响应(100rel)以及SIP客户端和服务器如何处理各种事务和响应。
摘要由CSDN通过智能技术生成

http://sofia-sip.sourceforge.net/refdocs/nta/index.html翻译自官网的这张网页。


模块元信息

Sofia SIP Transaction API (nta)提供针对SIP事务、传输和消息处理的简单接口。nta接口计划是网络和用户元素(need translate again)。nta的公开接口在<sofia-sip/nta.h>头文件中定义,tag参数在<sofia-sip/nta_tag.h>头文件中定义。

联系人:
Pekka Pessi < Pekka.Pessi@nokia-email.address.hidden>
状态:
Sofia SIP Core library
许可:
LGPL

NTA Objects

NTA处理很多类对象:agent (nta_agent_t),call legs (nta_leg_t),客户端外呼请求(nta_outgoing_t),呼入的服务端请求(nta_incoming_t)。

NTA使用SIP消息对象msg_tsip_t来处理消息,分别在<sofia-sip/msg.h>和<sofia-sip/sip.h>头文件中定义。SIP头都在<sofia-sip/sip.h>头文件中定义。

创建NTA代理

大部分的SIP实体,用户代理或网关,都由SIP服务器和SIP客户端协同工作组成。NTA提供nta_agent_t对象提供SIP服务器和客户端的简单接口。

调用nta_agent_create()函数将创建一个nta_agent_t对象。对象监听着传入的连接,接收消息,解析它们,并且将它们传递给应用程序。它还负责解析域名以及发送消息。

代理需要su_root_t对象来调度它自身的执行。root对象被用来等待网络事件,调度定时器函数,异步传递消息。root对象可通过su_root_create()函数创建。root对象可以有它自己的线程,或者它的主循环过程由其他应用程序线程通过调用su_root_run()函数来执行。主循环过程可以通过调用su_root_break()函数结束它。

一个简单的代理可以像如下这样来创建:

  registrar->reg_root = su_root_create(NULL);

  if (registrar->reg_root) {
    registrar->reg_agent = nta_agent_create(registrar->reg_root,
                                            (url_string_t*)argv[1],
                                            NULL,
                                            NULL,
                                            NULL);

    if (registrar->reg_agent) {
      su_root_run(registrar->reg_root);
      nta_agent_destroy(registrar->reg_agent);
    }

    su_root_destroy(registrar->reg_root);
  }

SIP服务器动作

SIP服务器会响应客户端发起的事务。SIP服务器可在两种模式下运作:无状态和有状态。这一节描述一个有状态的SIP服务器如何使用NTA。

NTA腿

一条腿用来表示有状态的事务处理。腿缺省这么被创建:

 default_leg = nta_leg_tcreate(agent, process_requests, context,
                               URLTAG_URL(url),
                               NTATAG_NO_DIALOG(1),
                               TAG_END());

url参数用来指定哪个URLs匹配这条腿。如果给出了url,只有那些requestURI匹配这个参数的请求才会被这条腿处理。nta_leg_tcreate() 函数也是一个tag参数函数,接收tagged参数列表。

正常的腿可被用来匹配已经存在的会话、通话或事务上下文的呼入请求,或提供有着连续头的呼出请求。当一个通话的腿被创建,From和To头会被提供给它,其他的头也可选择性地提供给它,例如Call-IDRouteCSeq

一个新的腿像这样被创建:

 call_leg = nta_leg_tcreate(agent,
                            process_call_requests, call_context,
                            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值