ns3

TypeId in NS3

July 29, 2018
cpp, ns3

NS3作为一个网络仿真库,出于性能的考量选择了C++。在写仿真程序时,不可避免的要对各种实体进行建模,自然C++中的class成了唯一可选的方案。不加任何技巧的class的确可以满足对某些实体的建模,可是在仿真软件的编写中需要有足够的动态性,比如有这样一些需求:

  1. 动态的获知某个实体所具有的各类属性与属性的值
  2. 这个实体的状态变化后引发一系列的动作

这些都不是过分的需求,如果真的写过仿真程序的话肯定会非常渴求使用的软件能够提供实现这些需求的方法。要自己干巴巴的实现这些需求也不是不可以,比如可以提供一些查询接口来实现1;对于2的话,Qt的signal/slot或许可以实现。说到Qt了,其实QObject拥有了超越普通C++ class的能力,也都能满足上面指出的这些需求,但是其解决方案似乎有点重。

幸好,NS3通过TypeId可以很好的解决上面提出的各类需求。

...