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

Re: question about agent type



On 19 Feb 2000, Yuri Pryadkin wrote:

> Or use the info command:
>   if {[$agent info class] == "Agent/NBD"} {...}

Surely that's not very class-friendly, because it promptly breaks
for any subsequent classes derived from NBD?

Something like:

if {[string first "Agent/NBD" [$agent info class]] == 0} { }

strikes me as slightly better, but even that could fall over if you
say derive an entirely separate class from Agent called NBDother,
requiring extra tests to separate the two out.

This is just one good reason why all classes should have / tagged on
the end as default; then testing for Agent/NBD/ would catch
_everything_ safely. Oh, and tagging / on the start would mean that
substring matches can't confuse /Agent/NBD/ with an entirely separate
/Agent/TapAgent/NBD/.

Less messy in the long run.

L.

Apache redirects teach you a lot about the ns class hierarchy.

<[email protected]>PGP<http://www.ee.surrey.ac.uk/Personal/L.Wood/>


> Tarik Alj <[email protected]> writes:
> 
> > >From the base class agent write an instproc is-nbd? that always return 0; from 
> > your nbd agent class write an intsproc is-nbd? that always return 1. It should 
> > do the trick...
> > 
> > > 
> > > Hello,
> > > 
> > > I would like to develop an agent for ad-hoc network which runs a 
> > > neighbor discovery protocol, and just that.
> > > As the aodv routing protocol does neighbor discovery, my code-writing 
> > > strategy has been to steal as much as I could into the aodv code.
> > > But, I want my new agent, call it nbd, to be a normal agent, not a 
> > > routing one like aodv. However, I would like nbd to send its packets  
> > > (hello messages in fact) direclty to the ll layer.
> > > To do so, I think I should add to the add-target-New procedure in ns/tcl
> > > /lib/ns-node.tcl the following:
> > > 
> > > 	#
> > > 	# Send Target
> > > 	#
> > > 
> > > If the agent is a nbd
> > > 	$agent target [$self set ll_(0)]
> > > else
> > > 	$agent target [$self entry]
> > > 	
> > > 	#
> > > 	# Recv Target
> > > 	#
> > > 	...
> > > 
> > > How could I code the "agent is a nbd" part?
> > > How could I get the type of an agent when the only thing I know about it
> > >  is "$agent"?
> > > 
> > > any suggestions about how I could do what I want to do?
> > > 
> > > Cheers,
> > > --
> > > Robin POSS
> > 
> > Tarik