comp.lang.ada
 help / color / mirror / Atom feed
From: Jonas Nygren <ehsjony@ehs.ericsson.se>
Subject: Re: [Q]: Distributed System Annex DSA
Date: 1996/09/09
Date: 1996-09-09T00:00:00+00:00	[thread overview]
Message-ID: <32343D67.5E2D@ehs.ericsson.se> (raw)
In-Reply-To: 3233EF42.702C@ehs.ericsson.se


I referred to the wrong package in my first question which
made it self answering. Pls see below for correction.

Jonas Nygren wrote:
> 
> For Gnat there now is a release of support for DSA. So I thought
> it was time to get an understanding what DSA can do for me. I have
> a few questions around this topic after trying to understand what
> the Rational and the RM's texts on this feature. (If you can point me
> to some more good educational text for DSA I would appreciate that.)
> 
> Now to my questions for which I use the example of Tape_Driver given
> in Annex E of the RM. I attach the code from the RM at the end of
> this posting.
> 
> 1)  When I studied this example I got the impression that the three
>     parts Name_Server, Tape_Server and Tape_Client all could run
>     in different partitions (and on different nodes). What confuses
>     me is that the Name_Server does not have any 'pragma

                      ^ ^  Ouch, it should have been Tape_Server

>     Remote_Call_Interface' and in the explaining text it is referred
>     to as a 'normal package'. Does this imply that Tape_Client and
>     Tape_Server must be co-located in the same partition? If not,
>     how does the compiler know that Tape_Server's interfaces
>     (Copy, Rewind) should be constructed to receive remote calls?
> 
> 2)  I have come to regard the package Tapes as the 'contract' of
>     a tape service. Would this be the right place to enforce
>     constraint and state checks to strengthen the consistency
>     of the interface. State information would then be stored in
>     the Tape (tagged) record. Are there any negative consequences
>     in this approach and are there better ways to do this?
> 
> 3)  With CORBA and other similar technologies there is often much
>     discussions on the need for threads in servers. My third question
>     is about if and how one can use Ada tasks to achieve this in
>     one remote active partition.
> 
>     One example in the Rationale showed how one could link together
>     a number of active Worker partitions with a Controller partition
>     and how these partitions could be distributed on different nodes.
>     But nothing with tasks involved.
> 
>     My question is really if it is possible to multi-plex several
>     service sessions on one partition. E.g. If Client A and B issues
>     requests to the server 'at the same time' - how do I design the
>     server so that these two calls can be overlapping and executed in
>     parallel.
> 
> Any help appreciated!
> 
> Thanks in advance,
> 
> /jonas
> 
> -- Tape example from Ada RM e.4.2
> 
> (2)
>        package Tapes is
>           pragma Pure(Tapes);
>           type Tape is abstract tagged limited private;
>           -- Primitive dispatching operations where
>           -- Tape is controlling operand
>           procedure Copy (From, To : access Tape; Num_Recs : in Natural)
> is abstract;
>           procedure Rewind (T : access Tape) is abstract;
>           -- More operations
>        private
>           type Tape is ...
>        end Tapes;
> (3)
>        with Tapes;
>        package Name_Server is
>           pragma Remote_Call_Interface;
>           -- Dynamic binding to remote operations is achieved
>           -- using the access-to-limited-class-wide type Tape_Ptr
>           type Tape_Ptr is access all Tapes.Tape'Class;
>           -- The following statically bound remote operations
>           -- allow for a name-server capability in this example
>           function  Find     (Name : String) return Tape_Ptr;
>           procedure Register (Name : in String; T : in Tape_Ptr);
>           procedure Remove   (T : in Tape_Ptr);
>           -- More operations
>        end Name_Server;
> (4)
>        package Tape_Driver is
>          -- Declarations are not shown, they are irrelevant here
>        end Tape_Driver;
> (5)
>        with Tapes, Name_Server;
>        package body Tape_Driver is
>           type New_Tape is new Tapes.Tape with ...
>           procedure Copy
>            (From, To : access New_Tape; Num_Recs: in Natural) is
>           begin
>             . . .
>           end Copy;
>           procedure Rewind (T : access New_Tape) is
>           begin
>              . . .
>           end Rewind;
>           -- Objects remotely accessible through use
>           -- of Name_Server operations
>           Tape1, Tape2 : aliased New_Tape;
>        begin
>           Name_Server.Register ("NINE-TRACK",  Tape1'Access);
>           Name_Server.Register ("SEVEN-TRACK", Tape2'Access);
>        end Tape_Driver;
> (6)
>        with Tapes, Name_Server;
>        -- Tape_Driver is not needed and thus not mentioned in the
> with_clause
>        procedure Tape_Client is
>           T1, T2 : Name_Server.Tape_Ptr;
>        begin
>           T1 := Name_Server.Find ("NINE-TRACK");
>           T2 := Name_Server.Find ("SEVEN-TRACK");
>           Tapes.Rewind (T1);
>           Tapes.Rewind (T2);
>           Tapes.Copy (T1, T2, 3);
>        end Tape_Client;




  parent reply	other threads:[~1996-09-09  0:00 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-09-09  0:00 [Q]: Distributed System Annex DSA Jonas Nygren
1996-09-09  0:00 ` Samuel Tardieu
1996-09-09  0:00 ` Jonas Nygren [this message]
1996-09-10  0:00   ` Robert A Duff
1996-09-12  0:00     ` Jonas Nygren
1996-09-12  0:00       ` Robert A Duff
1996-09-13  0:00         ` Philip Brashear
1996-09-21  0:00           ` Robert Dewar
1996-09-26  0:00             ` Dale Stanbrough
1996-09-21  0:00           ` Robert Dewar
1996-09-12  0:00   ` Samuel Tardieu
1996-09-13  0:00   ` Jon S Anthony
  -- strict thread matches above, loose matches on Subject: below --
1996-09-21  0:00 Douglas Rupp
1996-09-24  0:00 ` Mike Stark
1996-09-24  0:00 ` Art Schwarz
1996-09-24  0:00 ` Mark A Biggar
1996-09-25  0:00 ` Alan Brain
1996-09-21  0:00 Douglas Rupp
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox