*hi guys, i'm implementing a new block to insert into the SimpleLink strucutre , * between queue_ and link_. blocks, i create a new class call SKlink from class connector, it is simple i just wanna use the recv function to for now just print a message each time a packet is transmitted over the link. i achieve to compile everythink ok , but when i run my tcl script (at the end of this page) , i got and error i show below. i following the 14.1 section of Teerawat Issariyakul book, i suppose i'm missing something, i'll appreciate a lot any help. thabks * skmod.cc*
#include "skmod.h" void SKHandler::handle(Event*){} SKlink::SKlink() : skh_(*this) { pkt_=0; qh_=0; }; void SKlink::recv(Packet* p, Handler* h) { printf("inside recv SK function \n"); send(p,&skh_); } *skmod.h* #include "connector.h" #include "random.h" #include "timer-handler.h" #include "ranvar.h" class SKlink; class SKHandler : public Handler { public: SKHandler(SKlink& sk) : sk_link_(sk) {} void handle(Event*); private: SKlink& sk_link_; }; class SKlink : public Connector { public: SKlink(); //int command(int argc, const char*const* argv); void recv(Packet* p, Handler* h); protected: SKHandler skh_; Packet* pkt_; Handler* qh_; }; * ns-link.tcl* SimpleLink instproc link-skt {} { $self instvar link_ queue_ drophead_ $self instvar SKlk_ set SKlk_ [new SKlink] queue_ target $SKlk_ $SKlk_ target $link_ $SKlk_ drop-target $drophead_ } *ns-lib.tcl* Simulator instproc link-skt {from to} { set link [$self link $from $to] $link link-skt } -- *Error i get* r...@hobbes:/home/pdro7/Desktop/nsCOSIM/ns-2.34# ./ns testTCP.tcl invalid command name "SKlink" while executing "SKlink create _o38 " invoked from within "catch "$className create $o $args" msg" invoked from within "if [catch "$className create $o $args" msg] { if [string match "__FAILED_SHADOW_OBJECT_" $msg] { delete $o return "" } global errorInfo error "class $..." (procedure "new" line 3) invoked from within "new SKlink" (procedure "_o29" line 4) (SimpleLink link-skt line 4) invoked from within "$link link-skt" (procedure "_o3" line 3) (Simulator link-skt line 3) invoked from within "$ns link-skt $n0 $n1" (file "testTCP.tcl" line 41) Scrip Tlc # This script is created by NSG2 beta1 # <http://wushoupong.googlepages.com/nsg> #=================================== # Simulation parameters setup #=================================== set val(stop) 13.0 ;# time of simulation end #=================================== # Initialization #=================================== #Create a ns simulator set ns [new Simulator] #Open the NS trace file set tracefile [open out.tr w] $ns trace-all $tracefile #Open the NAM trace file set namfile [open out.nam w] $ns namtrace-all $namfile #=================================== # Nodes Definition #=================================== #Create 2 nodes set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #=================================== # Links Definition #=================================== #Createlinks between nodes $ns simplex-link $n0 $n1 1000.0Mb 0.00001ms DropTail $ns queue-limit $n0 $n1 50 *$ns link-skt $n0 $n1* $ns simplex-link $n2 $n0 1000.0Mb 0.00001ms DropTail $ns queue-limit $n2 $n0 50 $ns simplex-link $n1 $n3 1000.0Mb 0.00001ms DropTail $ns queue-limit $n1 $n3 50 $ns simplex-link $n4 $n0 1000.0Mb 0.00001ms DropTail $ns queue-limit $n4 $n0 50 $ns simplex-link $n1 $n5 1000.0Mb 0.00001ms DropTail $ns queue-limit $n1 $n5 50 #Give node position (for NAM) #$ns duplex-link-op $n0 $n1 orient right #=================================== # Agents Definition #=================================== #Setup a TCP connection set tcp0 [new Agent/UDP] $ns attach-agent $n2 $tcp0 set sink1 [new Agent/Null] $ns attach-agent $n3 $sink1 $ns connect $tcp0 $sink1 $tcp0 set packetSize_ 1500 set tcp1 [new Agent/UDP] $ns attach-agent $n4 $tcp1 set sink2 [new Agent/Null] $ns attach-agent $n5 $sink2 $ns connect $tcp1 $sink2 $tcp1 set packetSize_ 1500 #=================================== # Applications Definition #=================================== #Setup a CBR Application over TCP connection set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $tcp0 $cbr0 set packetSize_ 1000 $cbr0 set rate_ 1.0Mb $cbr0 set random_ null $ns at 1.0 "$cbr0 start" $ns at 11.5 "$cbr0 stop" set cbr1 [new Application/Traffic/CBR] $cbr1 attach-agent $tcp0 $cbr1 set packetSize_ 1000 $cbr1 set rate_ 1.0Mb $cbr1 set random_ null $ns at 1.2 "$cbr1 start" $ns at 11.8 "$cbr1 stop" #=================================== # Termination #=================================== #Define a 'finish' procedure proc finish {} { global ns tracefile namfile $ns flush-trace close $tracefile close $namfile #exec nam out.nam & exit 0 } #$ns at $val(stop) "$ns nam-end-wireless $val(stop)" $ns at $val(stop) "finish" $ns at $val(stop) "puts \"done\" ; $ns halt" $ns run Pedro Alonso Chaparro Valero R&D Engineer Ciudad Politecnica de la Innovación iTEAM - Mobile Communications Group Polytechnic University of Valencia C\ Camino de Vera S/N, Edificio 8G 46022 Valencia, Spain