NS3 回调trace的使用场景

trace大致分为两种
TracedCallback签名类型和TracedValue签名类型
TracedCallback主要用来记录读取参数
TracedValue主要用来记录数值变化
所以在想要获取某些数据信息的时候,并进行某种运算要使用TracedCallback,用记录某种值变化并打印就要使用TracedValue
回调函数是需要自己写的,所以造成了千人千面。

callback是模板类,makecallback是API,通过makecallback,可以将callback的实例与某个函数进行匹配

即callback<返回值, ****>  example = makeCallback(回调函数)

callback是个函数指针,在类外面定义一个 typedef 取个别名,给别的地方用
然后再makecallback绑定一下

一个简单的例子:

 typedef Callback<void, Ptr<Vehicle>, std::string, Ptr<const Packet> > DeviceTraceCallback;    //在类外定义
private:
   DeviceTraceCallback m_devTxTrace;
public:
   DeviceTraceCallback GetDevTxTraceCallback() {return m_devTxTrace;}
   void SetDevTxTraceCallback(DeviceTraceCallback devTxTrace) {  m_devTxTrace = devTxTrace; }
protected:
   void DevTxTrace (std::string context, Ptr<const Packet> p) { m_devTxTrace(Ptr<Vehicle>(this), context, p);}

实现:

std::ostringstream oss;
oss << "/NodeList/" << m_node->GetId()<< "/DeviceList/0/Mac/MacTx";
Config::Connect (oss.str(), MakeCallback (&Vehicle::DevTxTrace, this));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值