从零开始的ns3笔记(六):Trace Sources与Trace Sinks探究

一、Trace Sources探究

以下将围绕以下几个问题进行分析:

  • 怎样才能找到可以使用的跟踪源呢?
  • 找到了跟踪源,在连接它时该如何找出要使用的配置路径呢?
  • 找到了跟踪源和配置路径,如何确定回调函数的返回类型和形式参数呢?

1.1 如何找到可以使用的跟踪源

可以在 ns-3 API 文档中找到。ns-3: All TraceSources (nsnam.org)

third.cc中用到的ns3::MobilityModel也可以在这里找到。

1.2 配置路径

点击进入想要跟踪的Trace source(本文以ns3::MobilityModel为例) ,进入后点击第一行中的more,如下:

 点击后出现如下画面

 在third.cc中我们一开始使用的是ns3::RandomWalk2dMobilityModel,它属于MobilityModel的基类。正常情况下我们使用RandomWalk2dMobilityModel类的属性时需要配置的属性如下:

"/NodeList/[i]/$ns3::MobilityModel/$ns3::RandomWalk2dMobilityMode

 但由于CourseChange是在父类MobilityModel中定义的跟踪源,所以无需调用子类。因此third.cc中调用路径为:

"/NodeList/[i]/$ns3::MobilityModel"

1.3 确定回调函数 Callback signature

 该函数的确定也是在上述页面中,即下图中的Callback signature

 点击可得:

typedef是定义类型,third.cc中为static,确保 CourseChangeCallback 函数只在本地文件中可见。官方教程中,回调函数有两个参数,上下文context与移动模型MobilityMode。

但我在文档里只看到了一个参数,没有context参数,怀疑是不是该函数修改成默认为Config::ConnectWithoutContext了,但在third.cc中又出现了context参数和MobilityModel参数,不是很明白。anyway,用两个参数也没问题,使用Config::Connect也可以直观的查看配置路径。

二、在终端查找文件的方法

find . -name '*.h' | xargs grep TracedCallback

'*.h'是你要查找文件的统一标准,xargs grep后面输入所要文件的内容,若需要多个条件,则          ' | 所需的条件'。

在终端输入上述内容,即查找有TracedCallback内容的.h文件。

三、Trace Sinks探究

在third.cc中,使用了一段 TracedValue<int32_t> 的简单代码,我们只是简单介绍了 TracedValue 的真正含义,以及如何查找回调的返回类型和形式参数。

正如之前所说,traced-value.h 文件提供了跟踪符合值语义的数据所需的声明。一般来说,值语义只意味着可以传递对象本身,而不是传递对象的地址。我们将这一要求扩展到包括全套赋值式操作符,这些操作符是为plain-old-data(POD)类型预定义的:

通过这些操作符, 可以将所做的所有更改追踪到一个具有值语义的 C++ 对象。但是具体怎么使用这些操作符,文档里并没有举例,等后续有实例后再补充。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值