Changes between Version 5 and Version 6 of Documentation/NodeHandler/Commands/defTopology

Show
Ignore:
Timestamp:
08/28/07 20:46:16 (3 years ago)
Author:
thierry
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/NodeHandler/Commands/defTopology

    v5 v6  
    2929The optional 'block' allows the experimenter to further configure the topology. The following commands are defined inside the block: 
    3030 
    31   * '''addNode(x,y)'''  Add node at location x@y to the topology 
     31  * '''addNode(x,y)'''  Add node at location x@y to the topology. 
    3232 
    33   * '''removeNode(x,y)'''  Remove node at location x@y from the topology 
     33  * '''removeNode(x,y)'''  Remove node at location x@y from the topology. 
    3434 
    35   * '''size()'''  -- to be completed soon... 
     35  * '''size()'''  Return the number of nodes in this topology. 
    3636 
    37   * '''getNode(index)'''  -- to be completed soon... 
     37  * '''getNode(index)'''  Return the node at the position ''index'' in this topology. Return ''nil'' if ''index'' is greater than the number of nodes in the topology. 
    3838 
    39   * '''getFirstNode()'''  ... 
     39  * '''getFirstNode()'''  Return the node at the 1st position in this topology. 
    4040 
    41   * '''getLastNode()''' ... 
     41  * '''getLastNode()''' Return the node at the last position in this topoly. 
    4242    
    43   * '''getRandomNode()''' ... 
     43  * '''getRandomNode()''' Return a random node from this topology. Subsequent calls to this method may return the same node. 
    4444 
    45   * '''getUniqueRandomNode()''' ... 
     45  * '''getUniqueRandomNode()''' Return a unique random node from this topology. Subsequent calls to this method will never return the same node, i.e. once a node is randomly selected it is "removed from the bag of nodes" of this topology. When all the available nodes in this topology have been drawn, this method will return ''nil'' and output a warning message to the console. 
    4646 
    47   * '''eachNode(&block)''' 
     47  * '''eachNode(&block)''' Execute the commands in ''block'' on each node within this topology. 
    4848 
    49   * '''setStrict()'''  
     49  * '''setStrict()''' Set the ''strict'' flag for this topology. When the ''strict'' flag is set, adding or removing a node from this topology is not permitted, and will result in an error message on the console and the termination of the experiment. Typically a user sets this flag when s/he wants an experiment to proceed only if all the required nodes are present in this topology. By default, the ''strict'' flag is NOT set for a topology. 
    5050   
    51   * '''unsetStrict()''' 
     51  * '''unsetStrict()''' Unset the "strict" flag. By default, the ''strict'' flag is NOT set for a topology. 
    5252 
    53   * '''hasNode(x, y)''' 
     53  * '''hasNode(x, y)''' Return ''true'' if the node at location x@y is part of this topology, return ''false'' otherwise. 
    5454 
    5555 
     
    6262 
    6363{{{ 
    64 # topology contains 1 node 
    65 defTopology('test:topo:origin', [1, 1])  
     64# Define a topology that contains 4 specific nodes 
     65# 
     66defTopology('test:topo:origin', [[1, 1],[2,5],[10,4],[15,1]])  
    6667 
    67 # nodes arranged in a circle 
     68# Define a topology where nodes on the testbed are arranged  
     69# in a circle 
     70# 
    6871defTopology('test:topo:circle') { |t| 
    6972  # use simple 4-way algorithm 
     
    8386  } 
    8487} 
     88 
     89 
     90# Define a topology that will have 8 nodes randomly selected from  
     91# a previously defined topology (''topo_grid_active'' which includes all the  
     92# currently active node on the grid testbed) 
     93# 
     94defTopology('myTopo8Nodes') { |t| 
     95   
     96  # Load the 'topo_grid_active'  
     97  baseTopo = Topology['topo_grid_active'] 
     98  # Print the size of the base topology 
     99  puts "Size of the Base Topology: #{baseTopo.size}" 
     100   
     101  # Repeat the following 8 times 
     102  for count in 1..8 
     103    # Draw a random node from the base topology 
     104    aNode = baseTopo.getUniqueRandomNode 
     105    # Add this random node to this 'myTopo8Nodes' topology 
     106    t.addNode(aNode.x, aNode.y) 
     107  end 
     108   
     109  # Print the nodes that belongs to this topology 
     110  puts "Size of the 'myTopo8Nodes' Topology: #{t.size}" 
     111  t.eachNode { |n| 
     112    puts " - Node: #{n}" 
     113  } 
     114} 
    85115}}} 
    86116