Next: Summary of Pragma Remote_Call_Interface, Previous: Remote Access to Subprograms (RAS), Up: Pragma Remote_Call_Interface
A bank client is now connected to a bank through a terminal. The bank wants to notify a connected client, by means of a message on its terminal, when another client transfers a given amount of money to its account. In the following example, a terminal is designed as a distributed object. Each bank client will register its terminal object to the bank server for further use. In the code below, Term_Type is the root type of the distributed terminal hierarchy.
with Types; use Types; package Terminal is pragma Pure; type Term_Type is abstract tagged limited private; procedure Notify (MyTerm : access Term_Type; Payer : in Customer_Type; Amount : in Integer) is abstract; private -- implementation removed end Terminal;
In the code below, the RCI unit RACWBank defines Term_Access, a remote access to class wide type. Term_Access becomes a reference to a distributed object. In the next section, we will see how to derive and extend Term_Type, how to create a distributed object and how to use a reference to it.
with Terminal, Types; use Terminal, Types; package RACWBank is pragma Remote_Call_Interface; type Term_Access is access all Term_Type'Class; procedure Register (MyTerm : in Term_Access; Customer : in Customer_Type; Password : in Password_Type); -- [...] Other services end RACWBank;