### 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].