ReSIProcate之header宏

 

Header宏defineHeader主要分布三处,分别是

SipMessage.cxx defineHeader(_header, _name, _type, _rfc)

Headers.hxx defineHeader(_enum, _name, _type, _rfc)

Headers.cxx defineHeader(_enum, _name, _type, _reference)

SipMessage宏展开为调用的函数,而Headers宏展开则定义了一个类。

 

RetryAfter为例

defineHeader(RetryAfter,"Retry-After", UInt32Category, "RFC 3261");

 

调用方式

SipMessage* tryLater;

tryLater->header(h_RetryAfter);

 

 

相关宏展开之后

SipMessage.cxx 调用函数

 

Heads.hxx 类声明

class H_RetryAfter :public HeaderBase                            

{                                                              

   public:                                                    

      RESIP_HeapCount(H_RetryAfter);                              

      enum {Single = true};                                    

      typedef UInt32Category Type;                                     

      UnusedChecking(RetryAfter);                                   

      static Type&knownReturn(ParserContainerBase* container);

      virtual ParserContainerBase*makeContainer(HeaderFieldValueList* hfvs) const;      

      virtual Headers::Type getTypeNum()const;                

      virtual void merge(SipMessage&, constSipMessage&);      

      H_RetryAfter();                                             

};                                                             

extern H_RetryAfterh_RetryAfter

 

 

Headers.cxx 类定义                                                                 

 

 

从上面可以看出,使用宏目的是方便添加新的SIP组成零件,避免重复代码量。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值