[ns] Statements in recv() is not printed

2006-03-23 Thread raja priya

Dear All,
   
  I created a .cc file which actually has to broadcast the no of neighbors. For 
checking the c++ Otcl linkage i have just set the no of neighbors to be 10. I 
successfully created the .o file after doing make. I tried printing the no of 
neighbors using recv() in tcl but it dint print anything. When i ran the tcl 
script the packet is named as undefined and it is being sent at the specified 
time. I can understand that somewhere i made a logical mistake and since this 
is my new try i dont know where the actual error is.
   
  This is my .cc file:
   
  int hdr_broad::offset_broad_;
  static class BroadHeaderClass : public PacketHeaderClass {
  public:
  BroadHeaderClass() : PacketHeaderClass(PacketHeader/Broad, 
  sizeof(hdr_broad)) {
  bind_offset(hdr_broad::offset_broad_);
  }
  } class_broadhdr;
  static class AntClass : public TclClass {
  public:
  AntClass() : TclClass(Agent/Ant) {}
  TclObject* create(int, const char*const*) {
  return (new AntAgent());
  }
  } class_ant;
  AntAgent::AntAgent() : Agent(PT_ANT)
  {
  
  /*Nothing*/
  }
  int AntAgent::command(int argc, const char*const* argv)
  {
  if (argc == 2) {
  if (strcmp(argv[1], broadcast) == 0) { 
  broadcast_neigh(); 
  return (TCL_OK);
  }
  }
  return (Agent::command(argc, argv));
  }
  void AntAgent::recv(Packet* pkt, Handler*)
  { 
  hdr_broad* hdrb = HDR_BROAD(pkt);
  char out[100];
  sprintf(out, %s no of neighbors is %d,hdrb-src,hdrb-no_of_neigh);
  Tcl tcl = Tcl::instance();
  tcl.eval(out);
  Packet::free(pkt);
  
  }
  void AntAgent::broadcast_neigh()
  {
  Packet* pkt = allocpkt();
  hdr_broad* hdrb = HDR_BROAD(pkt);
  hdrb-no_of_neigh = 10; 
  send(pkt, 0);
  }
   
  The hdr_broad contains two elements: no of neighbors and the address(nsaddr_t)
   
  This is part of my tcl script:
   
  for {set i 0} {$i  $num_nodes} {incr i} {
  set a($i) [new Agent/Ant] 
  $n($i) attach $a($i) 
  }
  Agent/Ant instproc recv {from neigh} {
  $self instvar node_
  puts Node [$node_ id] received broadcast from $from with no of neighbors 
$neigh
  }
   
  $ns at 1.0 $a(0) broadcast
  $ns at 2.0 $a(2) broadcast
  $ns at 5.0 finish
  $ns run
   
  Please bear with my silly errors.Only with your guidance i can proceed with 
my project. Please tell me where i have made a mistake. Why the no of nighbors 
is not getting printed?
   
  Thanks in Advance
  S.Rajapriya
   


-
Yahoo! Messenger with Voice. PC-to-Phone calls for ridiculously low rates.


[ns] Statements in recv() is not printed

2006-03-23 Thread raja priya

Dear All,
   
  I created a .cc file which actually has to broadcast the no of neighbors. For 
checking the c++ Otcl linkage i have just set the no of neighbors to be 10. I 
successfully created the .o file after doing make. I tried printing the no of 
neighbors using recv() in tcl but it dint print anything. When i ran the tcl 
script the packet is named as undefined and it is being sent at the specified 
time. I can understand that somewhere i made a logical mistake and since this 
is my first try i dont know where the actual error is.
   
  This is my .cc file:
   
  int hdr_broad::offset_broad_;
  static class BroadHeaderClass : public PacketHeaderClass {
  public:
  BroadHeaderClass() : PacketHeaderClass(PacketHeader/Broad, 
  sizeof(hdr_broad)) {
  bind_offset(hdr_broad::offset_broad_);
  }
  } class_broadhdr;
  static class AntClass : public TclClass {
  public:
  AntClass() : TclClass(Agent/Ant) {}
  TclObject* create(int, const char*const*) {
  return (new AntAgent());
  }
  } class_ant;
  AntAgent::AntAgent() : Agent(PT_ANT)
  {
  
  /*Nothing*/
  }
  int AntAgent::command(int argc, const char*const* argv)
  {
  if (argc == 2) {
  if (strcmp(argv[1], broadcast) == 0) { 
  broadcast_neigh(); 
  return (TCL_OK);
  }
  }
  return (Agent::command(argc, argv));
  }
  void AntAgent::recv(Packet* pkt, Handler*)
  { 
  hdr_broad* hdrb = HDR_BROAD(pkt);
  char out[100];
  sprintf(out, %s no of neighbors is %d,hdrb-src,hdrb-no_of_neigh);
  Tcl tcl = Tcl::instance();
  tcl._eval(out);
  Packet::free(pkt);
  
  }
  void AntAgent::broadcast_neigh()
  {
  Packet* pkt = allocpkt();
  hdr_broad* hdrb = HDR_BROAD(pkt);
  hdrb-no_of_neigh = 10; 
  send(pkt, 0);
  }
   
  The hdr_broad contains two elements: no of neighbors and the address(nsaddr_t)
   
  This is part of my tcl script:
   
  for {set i 0} {$i  $num_nodes} {incr i} {
  set a($i) [new Agent/Ant] 
  $n($i) attach $a($i) 
  }
  Agent/Ant instproc recv {from neigh} {
  $self instvar node_
  puts Node [$node_ id] received broadcast from $from with no of neighbors 
$neigh
  }
   
  $ns at 1.0 $a(0) broadcast
  $ns at 2.0 $a(2) broadcast
  $ns at 5.0 finish
  $ns run
   
  Please bear with my silly errors. Only with your guidance i can proceed with 
my project. Please tell me where i have made a mistake. Why the no of nighbors 
is not getting printed?
   
  Thanks in Advance
  S.Rajapriya


-
Yahoo! Messenger with Voice. PC-to-Phone calls for ridiculously low rates.