[ Back ]
-- ail.rpd
-- michael chen
-- august 12, 1996


-- abstract implementation layer architecture


type ail_interface is interface
service COL : dual Concepts_Of_Operation_Layer;
service PB : Pass_Back;
requires
   function Latency(A : Action_Type; T : Integer) return integer;
end ail_interface;


architecture ail_arch() for ail_interface 
is
   Clients : array [integer] of Client is (1..Num_Clients, default is 
	ClientArch());
   S : Server is ServerArch();
connect
-- The following service connections had to be changed to event
-- connections due to a problem Raptor has with basic connections.
--   COL to C.COL;

   (?I in Integer) COL.IDA.start_belvedere(?I) ||> 
      Clients[?I].COL.IDA.start_belvedere();
   (?I in Integer) COL.IDA.new_inquiry_diagram(?I) ||>
      Clients[?I].COL.IDA.new_inquiry_diagram();
   (?I in Integer) COL.IDA.list_inquiry_diagram(?I) ||>
      Clients[?I].COL.IDA.list_inquiry_diagram();
   (?D in Diagram_ID, ?I in Integer) COL.IDA.open_inquiry_diagram(?D, ?I) ||>
      Clients[?I].COL.IDA.open_inquiry_diagram(?D);
   (?I in Integer) COL.IDA.add_node(?I) ||>
      Clients[?I].COL.IDA.add_node();
   (?I in Integer) COL.IDA.add_edge(?I) ||>
      Clients[?I].COL.IDA.add_edge();
   (?I in Integer) COL.IDA.update_node(?I) ||>
      Clients[?I].COL.IDA.update_node();
   (?I in Integer) COL.IDA.move_node(?I) ||>
      Clients[?I].COL.IDA.move_node();
   (?I in Integer) COL.IDA.delete_node(?I) ||>
      Clients[?I].COL.IDA.delete_node();
   (?I in Integer) COL.IDA.delete_edge(?I) ||>
      Clients[?I].COL.IDA.delete_edge();
   (?I in Integer) COL.IDA.exit_diagram(?I) ||>
      Clients[?I].COL.IDA.exit_diagram();
   (?I in Integer) COL.I_S.start_netscape(?I) ||>
      Clients[?I].COL.I_S.start_netscape();
   (?I in Integer) COL.I_S.get_URL(?I) ||>
      Clients[?I].COL.I_S.get_URL();
   (?I in Integer) COL.AS.request_advice(?I) ||>
      Clients[?I].COL.AS.request_advice();
--
   (?I in Integer) COL.IDA.reference_this(?I) ||> 
      Clients[?I].COL.IDA.reference_this();

-- document request connections
   (?I in Integer) S.HTMLPage(?I) ||> Clients[?I].In_HTMLPage;

-- help request connections
   (?I in Integer) S.Advice(?I) ||> Clients[?I].In_Advice;

-- server response to client connections
   (?R in Response_Type, ?I in Integer) S.Response(?R, ?I) ||> 
	Clients[?I].In_Response(?R);
   (?A in Action_Type, ?D in Diagram_ID, ?I in Integer) 
	S.Notify(?A, ?D, ?I) ||> Clients[?I].Notify(?A, ?D);

-- from clients out of ail

for I : Integer in 1..Num_Clients generate 
   Clients[I].WebStartup ||> PB.WebStartup(I);
   Clients[I].JavaStartup ||> PB.JavaStartup(I);
   (?U in URL_Type, ?A in Action_Type, ?D in Diagram_ID) 
	Clients[I].Server_Request(?U, ?A, ?D) ||> 
	S.Server_Request(?U, ?A, ?D, I);
   Clients[I].HTMLPage ||> PB.HTMLPage(I);
   Clients[I].Advice ||> PB.Advice(I);
   (?R in Response_Type) Clients[I].Response(?R) ||> 
	PB.Response(?R, I);
end generate;

(?A in Action_Type, ?T in Integer) S.Latency(?A, ?T) to Latency(?A, ?T);

end ail_arch;



[ Back ]

© 1996 TRW Inc. All rights reserved.