某些ns-3 的新手对代码中广泛使用的编程习惯不熟悉:“ns-3 callback”。本章 提供回调的设计动机、使用方法以及他的实现细节。 1.5.1 动机 Callbacks Motivation 考虑有两个模拟模型 A 和 B,并希望使他们在模拟过程中互相传递信息。一种方 法是使得 A 和 B 彼此知道对方,这样他们就可以彼此调用对方的方法。
在http://point-to-point-net-device.cc文件中,可以找到为m_rxCallback赋值的函数,即SetReceiveCallback函数。那么SetReceiveCallback是在何处被调用的呢?在http://node.cc中找到了答案:在http://node.cc文件的AddDevice函数中,SetReceiveCallback函数被调用,且该函数的参数是MakeCallback(&Node::NonPromiscReceiv...
NS3中对普通函数、对象的方法、类的静态方法等进行了的封装(Callback对象,其中使用C++的模板来表示对应函数的返回值和参数。其中第一个模板参数表示函数的返回值,其后的模板参数表示函数的参数),在src/core/module/callback.h中实现了回调最多可以添加9个参数。 view code 普通函数的回调(FunctorCallbackImpl) 回调...
CallbackList m_callbackList; TraceValue: 封装一种基本类型和对应的list<callback>所有回调的输入形参都是(旧值,新值)。c++ T m_v; TracedCallback<T,T> m_cb;回调输入的两个Arg都是T类型 MakeTraceSourceAccessor 生成对应的TraceValue的TraceSourceAccessorc++ Ptr<const TraceSourceAccessor> MakeTraceSource...
如果为这个变量增加 Trace callback函数,则每当这个变量变化,相关联的callback函数就会被调用(callback函数一般都是将变量值输出到对应的文件当中)。所以,如果需要trace一个变量的变化,首先需要一个callback函数将变量输出到对应的文件当中,然后需要将这个callback函数和对应的trace target链接起来。
TracedValue::operator=调用了与m_myInt相关联的TracedCallback::operator() TracedCallback::operator()以此调用事先注册好的Callback。 总结 IidManager是一个数据库,TypeId是数据库的key,Attribute和TraceSource是数据库的两张表。每在GetTypeId里AddAttribute或者AddTraceSouce一次就相当于给表里加一行记录,所有与Attri...
第一个函数:对指定的参数设置回调函数。这里可以参看NS3 Callback简单说明 第二个函数:对指定的值参数设置属性。这里面的属性参数一般都是NS3本身的属性参数。 第三个函数:对指定的参数设置值。最简单的一种参数值设置。 示例代码: conststd::string attrClass="ns3::RandomVariableStream";conststd::string attrNa...
/* Callback function invoked by libpcap for every incoming packet */void CCommonIcmpSendDlg::packet_handler(void *_param, const void *_header, const void *_pkt_data){ uint8_t buffer[2048], *p; p = (uint8_t *)_pkt_data + 12; if (p[0] != 8 || p[1] != 0) return; con...
core: ns-3的内核模块,实现了ns-3的基本机制,如智能指针(Ptr)、属性(attribute)、回调(callback)、随机变量(random variable)、日志(logging)、追踪(tracing)和事件调度(event scheduler)等内容。 network: 网络数据分组(packet)的模块。 Internet: 实现了关于TCP/IPv4和IPv6的相关协议族,包括IPv4 IPv6 ARP UDP...
至此,流完成,对应的流完成时间计算完毕并输出供分析。 补充信息 m_qpCompleteCallback(qp);与RdmaDriver中的QpComplete函数绑定过程: 而RdmaDriver::Init中通过调用下面的Setup函数绑定此回调函数: 等价于: QpCompleteCallback cb = &RdmaDriver::QpComplete 本人水平有限,如有错误,欢迎指正。