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

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



The error could be due to something else. Just print the string that is
evaluated and see whether that is correct.

Debo

On Thu, 15 Feb 2001, Tulius Lima wrote:

> Hi,
> 
> 
>         I am still trying to call a tcl object from c++, but I still
> haven't got any success at it.
>         I tried to call tcl.eval(...) but the simulator crashed.
>         I guess that the tcl object was not properly initialized.
> 
> 
>         Any sugestions?
>         Tulius Lima
> 
> * error message -----
> ns: _o17 send-probe-pkts-to 14 3000 0 4000:
>     (_o17 cmd line 1)
>     invoked from within
> "_o17 cmd send-probe-pkts-to 14 3000 0 4000"
>     invoked from within
> "catch "$self cmd $args" ret"
>     (procedure "_o17" line 2)
>     (SplitObject unknown line 2)
>     invoked from within
> "_o17 send-probe-pkts-to 14 3000 0 4000"
> ----- error message *
> 
> 
> * c++ code ----------
> int MPLSAddressClassifier::sendProbePkts(int index)
> {
>   Tcl& tcl = Tcl::instance();
> 
>   for(int i = 1; i < no_probe_pkts_; i++)
>   {
>     char out[100];
> 
>     // get routing information
>     // informacao de IDA
>     int FEC    = RT_.Entry_[index].fec_;
>     int LSPid  = RT_.Entry_[index].LSPid_;
> 
>     // round-trip information
>     int vFEC   = RT_.Entry_[index].vfec_;
>     int vLSPid = RT_.Entry_[index].vLSPid_;
> 
> 
>     // Prepare the output to the Tcl interpreter. Calculate the round
>     // trip time
>     sprintf(out, "%s send-probe-pkts-to %d %d %d %d",
>      name(),
>      FEC,
>      LSPid,
>      vFEC,
>      vLSPid);
>     tcl.eval(out);
> 
>     char *result = tcl.result();
>     if (atoi(result) != 1)
>       printf("******* erro no tcl.eval(...)");
>   } // FOR
> } // end - sendProbePkts()
> ----------------- c++ code
> 
> * tcl initialization code ---------\
> MplsNode instproc te-attach-egress {egress} {
>     set ns [Simulator instance]
> 
>     $self instvar ping_
> 
>     set pong_ [$egress get-ping-agent]
> 
>     $ns connect $ping_ $pong_
> }
> 
> 
> 
> ----- tcl initialization code-----*
> 
> 
>