ns3重要类

1. simple-ref-count

递归模板,使得通过定义T:SimpleRefCount<T>使得T类都具有计数功能

template <typename T, typename PARENT = empty, typename DELETER = DefaultDeleter<T> >
class SimpleRefCount : public PARENT{}

2.Ptr

Ptr类默认数据成员T类型的指针自带引用计数功能(一般是simple-ref-count的子类)

3.TypeTraits类

用于将某一种类型定性(通过typedef将某种类型重定义为是否为常数类型,是否为指针类型,是否为引用类型等。)

4.Attribute相关

抽象类:都是SimpleRefCount的派生类

  • AttributeValue
    • Copy
    • SerializeToString 将AttributeValue转换成string形式
    • DeserializeFromString 将string形式的AttributeValue转换成其他形式
  • AttributeAccessor 隐藏attribute的设置和查询
    • Set (ObjectBase *, const AttributeValue &)
    • Get
    • HasGetter
    • HasSetter
  • AttributeChecker
    • CreateValidValue
    • Check:类型bool
    • GetValueTypeName
    • Create:创建对应的Ptr<AttributeValue>
    • Copy:简单实现两个AttributeValue之间的赋值

Attribute相关宏

ATTRIBUTE_HELPER_HEADER(type)对应checker,value,accessor三种类定义宏
ATTRIBUTE_HELPER_CPP(type)对应checker,value三种类的实现的宏

《type##Value》

实现序列化和反序列化的时候需要用到<<和>>,因此内置类型必须定义这两种操作。
- 新增的函数
c++
//和Accessor的set函数配合使用,T对应于Accessor中目标服务类的类型
bool GetAccessor (T &value) const {
value = T (m_value);
return true;
}

《type##Checker》

  • 《type##Value>》完全继承AttributeChecker,不做任何修改(也是空实现)
  • MakeSimpleAttributeChecker函数模板,传入模板实参为:对应AttributeValue的内置成员类型,《type##Checker》类型。来实现具体的函数

Accessor

只是定义了Make##type##Accessor函数模板(输入形参为1个或者两个)。用户要生成对应的Accessor还需调用该函数。生成的AttributeAccessor可用于日后设置相应的AttributeValue

5.Callback

6.Trace

  • TracedCallback
    定义callbacklist:
list<Callback<void,T1,T2,T3,T4,T5,T6,T7,T8> > CallbackList;
 CallbackList m_callbackList;
  • TraceValue: 封装一种基本类型和对应的list<callback>所有回调的输入形参都是(旧值,新值)。 c++ T m_v; TracedCallback<T,T> m_cb;回调输入的两个Arg都是T类型
  • MakeTraceSourceAccessor
    • 生成对应的TraceValue的TraceSourceAccessor c++ Ptr<const TraceSourceAccessor> MakeTraceSourceAccessor MakeTraceSourceAccessor<TraceValue>;
  • TraceSourceAccessor::connect() 调用TraceSourceAccessor的connect函数就能把sink(callback)和TraceSource连接起来

7.TypeId

  • 创建一个类的时候,要生成与类名对应的TypeID,并SetParent,AddConstructor。

原文链接: https://www.cnblogs.com/rainySue/p/ns3zhong-yao-lei.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    ns3重要类

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/238330

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午5:45
下一篇 2023年2月13日 下午5:45

相关推荐