Next: , Previous: Most Features in One Example, Up: DSA


8.4 A small example of a DSA application

In this section we will write a very simple client-server application using PolyORB DSA. The server will provide a Remote Call Interface composed of a single Echo_String function that will take a String and return it to the caller.

Here is the code for the server:

server.ads:

     
     ------------------------------------------------------------------------------
     --                                                                          --
     --                           POLYORB COMPONENTS                             --
     --                                                                          --
     --                               S E R V E R                                --
     --                                                                          --
     --                                 S p e c                                  --
     --                                                                          --
     --         Copyright (C) 2011-2012, Free Software Foundation, Inc.          --
     --                                                                          --
     -- This is free software;  you can redistribute it  and/or modify it  under --
     -- terms of the  GNU General Public License as published  by the Free Soft- --
     -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
     -- sion.  This software is distributed in the hope  that it will be useful, --
     -- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
     -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
     -- License for  more details.                                               --
     --                                                                          --
     -- You should have received a copy of the GNU General Public License and    --
     -- a copy of the GCC Runtime Library Exception along with this program;     --
     -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
     -- <http://www.gnu.org/licenses/>.                                          --
     --                                                                          --
     --                  PolyORB is maintained by AdaCore                        --
     --                     (email: sales@adacore.com)                           --
     --                                                                          --
     ------------------------------------------------------------------------------
     
     package Server is
        pragma Remote_Call_Interface;
        function Echo_String (S : String) return String;
     end Server;
     

server.adb:

     
     ------------------------------------------------------------------------------
     --                                                                          --
     --                           POLYORB COMPONENTS                             --
     --                                                                          --
     --                               S E R V E R                                --
     --                                                                          --
     --                                 B o d y                                  --
     --                                                                          --
     --         Copyright (C) 2011-2012, Free Software Foundation, Inc.          --
     --                                                                          --
     -- This is free software;  you can redistribute it  and/or modify it  under --
     -- terms of the  GNU General Public License as published  by the Free Soft- --
     -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
     -- sion.  This software is distributed in the hope  that it will be useful, --
     -- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
     -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
     -- License for  more details.                                               --
     --                                                                          --
     -- You should have received a copy of the GNU General Public License and    --
     -- a copy of the GCC Runtime Library Exception along with this program;     --
     -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
     -- <http://www.gnu.org/licenses/>.                                          --
     --                                                                          --
     --                  PolyORB is maintained by AdaCore                        --
     --                     (email: sales@adacore.com)                           --
     --                                                                          --
     ------------------------------------------------------------------------------
     
     package body Server is
     
        function Echo_String (S : String) return String is
        begin
           return S;
        end Echo_String;
     
     end Server;
     

And here is the code for the client:

client.adb:

     
     ------------------------------------------------------------------------------
     --                                                                          --
     --                           POLYORB COMPONENTS                             --
     --                                                                          --
     --                               C L I E N T                                --
     --                                                                          --
     --                                 B o d y                                  --
     --                                                                          --
     --         Copyright (C) 2011-2012, Free Software Foundation, Inc.          --
     --                                                                          --
     -- This is free software;  you can redistribute it  and/or modify it  under --
     -- terms of the  GNU General Public License as published  by the Free Soft- --
     -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
     -- sion.  This software is distributed in the hope  that it will be useful, --
     -- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
     -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
     -- License for  more details.                                               --
     --                                                                          --
     -- You should have received a copy of the GNU General Public License and    --
     -- a copy of the GCC Runtime Library Exception along with this program;     --
     -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
     -- <http://www.gnu.org/licenses/>.                                          --
     --                                                                          --
     --                  PolyORB is maintained by AdaCore                        --
     --                     (email: sales@adacore.com)                           --
     --                                                                          --
     ------------------------------------------------------------------------------
     
     with Ada.Exceptions;
     with Ada.Text_IO; use Ada.Text_IO;
     with Server;
     
     procedure Client is
     begin
        Put_Line ("The client has started!");
        Put ("Thus spake my server upon me:");
        Put_Line (Server.Echo_String ("Hi!"));
     exception
        when E : others =>
           Put_Line ("Got " & Ada.Exceptions.Exception_Information (E));
     end Client;
     

For more details about the Distributed Systems Annex, see the Ada Reference Manual [ISO06].