1. -- 
  2. --  Uwe R. Zimmer, Australia, September 2011 
  3. -- 
  4.  
  5. with Ada.Text_IO; use Ada.Text_IO; 
  6. with Topologies;  use Topologies; 
  7.  
  8. package body Generic_Routers is 
  9.  
  10.    procedure Global_Shutdown is 
  11.  
  12.    begin 
  13.       for Id in Router_Range loop 
  14.          select 
  15.             Router_Tasks (Id).Shutdown; 
  16.          or 
  17.             delay Command_Line_Parameters.Comms_Timeout; 
  18.             Put_Line ("Warning: Router" & Router_Range'Image (Id) & " did not respond to Shutdown call -> trying to abort it"); 
  19.             abort Router_Tasks (Id); 
  20.          end select; 
  21.       end loop; 
  22.    end Global_Shutdown; 
  23.  
  24.     use Router_Link; 
  25.  
  26. begin 
  27.    for Router_Id in Router_Range loop 
  28.       declare Links : Ids_To_Links := (others => null); 
  29.       begin 
  30.          for Potential_Neighbour_Id in Router_Range loop 
  31.             if Router_Id /= Potential_Neighbour_Id and then Nodes_Connected (Connection_Topology, Positive (Router_Id), Positive (Potential_Neighbour_Id)) then 
  32.                Links (Potential_Neighbour_Id) := Router_Tasks (Potential_Neighbour_Id)'Access; 
  33.             end if; 
  34.          end loop; 
  35.          select 
  36.             Router_Tasks (Router_Id).Configure (Links); 
  37.          or 
  38.             delay Command_Line_Parameters.Comms_Timeout; 
  39.             Routers_Configured := False; exit; 
  40.          end select; 
  41.       end; 
  42.    end loop; 
  43. end Generic_Routers;