[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 *
>
>
>
>