### 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`:

         package Server is
            pragma Remote_Call_Interface;
            function Echo_String (S : String) return String;
         end Server;

`server.adb`:

         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, Free Software Foundation, Inc.             --
         --                                                                          --
         -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
         -- under terms of the  GNU General Public License as published by the  Free --
         -- Software Foundation;  either version 2,  or (at your option)  any  later --
         -- version. PolyORB 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 distributed with PolyORB; see file COPYING. If    --
         -- not, write to the Free Software Foundation, 51 Franklin Street, Fifth    --
         -- Floor, Boston, MA 02111-1301, USA.                                       --
         --                                                                          --
         --                                                                          --
         --                  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].