1. -- 
  2. --  Framework: Uwe R. Zimmer, Australia, 2015 
  3. -- 
  4.  
  5. with Generic_Message_Structures; 
  6. with Generic_Router_Links; 
  7. with Id_Dispenser; 
  8.  
  9. generic 
  10.  
  11.    with package Message_Structures is new Generic_Message_Structures (<>); 
  12.  
  13. package Generic_Router is 
  14.  
  15.    use Message_Structures; 
  16.    use Routers_Configuration; 
  17.  
  18.    package Router_Id_Generator is new Id_Dispenser (Element => Router_Range); 
  19.    use Router_Id_Generator; 
  20.  
  21.    type Router_Task; 
  22.    type Router_Task_P is access all Router_Task; 
  23.  
  24.    package Router_Link is new Generic_Router_Links (Router_Range, Router_Task_P, null); 
  25.    use Router_Link; 
  26.  
  27.    task type Router_Task (Task_Id  : Router_Range := Draw_Id) is 
  28.  
  29.       entry Configure (Links : Ids_To_Links); 
  30.  
  31.       entry Send_Message    (Message :     Messages_Client); 
  32.       entry Receive_Message (Message : out Messages_Mailbox); 
  33.  
  34.       entry Shutdown; 
  35.  
  36.       -- Leave anything above this line as it will be used by the testing framework 
  37.       -- to communicate with your router. 
  38.  
  39.       --  Add one or multiple further entries for inter-router communications here 
  40.  
  41.    end Router_Task; 
  42.  
  43. end Generic_Router;