Presentation is loading. Please wait.

Presentation is loading. Please wait.

分裂对象模型 C++ otcl.

Similar presentations


Presentation on theme: "分裂对象模型 C++ otcl."— Presentation transcript:

1 分裂对象模型 C++ otcl

2 Tcl与C++对象绑定过程 以tcp为例,当你在tcl脚本中使用以下命令创建一个Tcp对象时
set tcp0 [new Agent/TCP] 首先创建tcl对象,即解释对象 proc new { className args } { set o [SplitObject getid] # 创建分裂对象 if [catch "$className create $o $args" msg] { } return $o

3 Tcl与C++对象绑定过程 然后通过Tcl对象的init()函数中创建对应的shadow对象
SplitObject instproc init args { $self next if [catch "$self create-shadow $args"] { error "__FAILED_SHADOW_OBJECT_" "" }

4 Tcl与C++对象绑定过程 Create-shadow怎样找到tcl对象对应的C++对象? 答案就是TclClass类!!!
static class TcpClass : public TclClass { public: TcpClass() : TclClass("Agent/TCP") {} TclObject* create(int , const char*const*) { return (new TcpAgent()); } } class_tcp;

5 C++与TCL联系 变量绑定 通常我们在构造函数中建立绑定是最安全、最简单、最有效的

6 C++与TCL联系 Otcl对象中调用C++对象的方法 我们通常是用的是Command方法

7 C++与TCL联系 C++中调用otcl过程 tcl.eval(char* s) tcl.evalc(const char* s)
tcl.evalf(char* s,……)

8 NS2系统结构 --离散事件模拟 把世界上的一切都看成事件 每一个事件都有一个预定的执行(虚拟的)时间,独立于真实执行时间。
维护一个基于发生时间排序的 事件(events)队列 维护一个系统的时间[virtual time] 重复的执行以下的过程: 从对首取出一个事件, set [virtual time]=event’s time 处理这个事件 如果在处理时间过程中产生新的event,插入queue 每一个事件都有一个预定的执行(虚拟的)时间,独立于真实执行时间。 CPU 执行的快慢不影响结果。

9 离散事件模拟示例 事件队列 S D A. 时间 事件 A. 1s S decides to send pkt to D
S starts sending pkt B. C. B. 1.005s S finishes transmitting pkt to D D. C. 1.01s D begins to recv pkt D. 1.015s D recvs entire pkt and delivers to application delay value transmission 0.005s propagation 0.01s S D

10

11

12 Thank you 联系方式:


Download ppt "分裂对象模型 C++ otcl."

Similar presentations


Ads by Google