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

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



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 *