[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] REPOST: Problems creating tcl object from within c++ class



You may want to look at the chapter on Tcl linkage (ns manual). You will
see that you can call Tcl from C++ and you can access C++ svariables etc
from Tcl

Cheers
Debo

On Tue, 13 Feb 2001, Tulius Lima wrote:

> Hi Folks,
> 
> 
>     I've created a new ping agent (Agent/TEPing) and I needed to access
> it from inside a c++ class (a new classifier that I created). I was
> trying to put this agent inside a node by creating a new ping_variable
> and then attaching it to the node.
> 
>     I really don't know whether this is the best way to do things,
> because I am getting all sorts of error messages.
> 
>     So my question is: is there a way to access a tcl object from within
> a c++ class?
> 
>     I a using ns v2.1.b7.
> 
> 
>     Thanks!
>     Tulius Lima
> 
> -----------
> There are a few lines that are commented out. This means that they
> usually crash.
> 
> * tcl code ---------------------------
> RtModule/MPLS/TE/MATE instproc register { node } {
>   $self instvar classifier_
>   $self attach-node $node
>   $node route-notify $self
>   $node port-notify $self
>   set classifier_ [new Classifier/Addr/MPLS/TE/MATE]
>   $classifier_ set-node $node $self
>   $node install-entry $self $classifier_ 0
>   $self instvar ping_
>   set ping_ [new Agent/TEPing]
>   $node attach $ping_
> }
> # Measuremnt Functions (ping related)
> RtModule/MPLS/TE/MATE instproc send-probe-pkts-to {fec lspid fecV
> lspidV} {
>   $self instvar ping_
>   $ping_ sendto $fec $lspid $fecV $lspidV
> }
> 
> RtModule/MPLS/TE/MATE instproc get-ping-agent {} {
>   $self instvar ping_
>   return $ping_
> }
> 
> RtModule/MPLS/TE/MATE instproc setup-ping { node } {
>    # creating simulator instance
>    set ns [Simulator instance]
>    $self instvar ping_
>    # attaching ping agent to this node
>    #$ns attach-agent $node $ping_
>    #$self attach $ping_
>    #puts "  %self  attach  %ping_"
> }
> 
> RtModule/MPLS/TE/MATE instproc te-attach-egress {egress} {
>    set ns [Simulator instance]
>    $self instvar ping_
>    set pong_ [new Agent/TEPing]
>    $pong_ [$egress get-ping-agent]
>    $ns connect $ping_ $pong_
> }
> 
> --------------------------- tcl code *
> --------------------------------------
> * error message ----------------------
> ns: _o23 send-probe-pkts-to 14 3000 0 4000:
>  (_o23 cmd line 1)
>  invoked from within
> "_o23 cmd send-probe-pkts-to 14 3000 0 4000"
>  invoked from within
> "catch "$self cmd $args" ret"
>  (procedure "_o23" line 2)
>  (SplitObject unknown line 2)
>  invoked from within
> "_o23 send-probe-pkts-to 14 3000 0 4000"
> ---------------------- error message *
> 
> 
> 
>