DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦bc65340c6⟧ TextFile

    Length: 2522 (0x9da)
    Types: TextFile
    Names: »V«

Derivation

└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
    └─ ⟦124ff5788⟧ »DATA« 
        └─⟦this⟧ 
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
    └─ ⟦6f12a12be⟧ »DATA« 
        └─⟦this⟧ 

TextFile

WITH Transport;
WITH Transport_Defs;

GENERIC
   WITH PROCEDURE Serve (Connection : Transport.Connection_Id) IS <>;

   -- Service an incoming connection.  The connection is already
   -- open and connected when passed, and will be closed on return.

PACKAGE Transport_Server IS

   TYPE Pool_Id IS PRIVATE;

   FUNCTION Create (Network      : Transport_Defs.Network_Name;
                    Local_Socket : Transport_Defs.Socket_Id;
                    Max_Servers  : Natural := Natural'Last) RETURN Pool_Id;

   -- Create a pool of server tasks, which may expand to have
   -- as many as MAX_SERVERS tasks in it.  Tasks are created
   -- in response to incoming connections on the given NETWORK
   -- and LOCAL_SOCKET.


   PROCEDURE Set_Max_Servers (Pool : Pool_Id; Max_Servers : Natural);

   -- Set the maximum number of server tasks which may be
   -- created for the pool.  If more tasks currently exist,
   -- they will continue to exist until they are done serving
   -- their connections, but no new tasks will be created.

   FUNCTION Network      (Pool : Pool_Id) RETURN Transport_Defs.Network_Name;
   FUNCTION Local_Socket (Pool : Pool_Id) RETURN Transport_Defs.Socket_Id;
   FUNCTION Max_Servers  (Pool : Pool_Id) RETURN Natural;
   FUNCTION Servers      (Pool : Pool_Id) RETURN Natural;


   PROCEDURE Finalize (Abort_Servers : Boolean := False);

   -- Terminate the tasks which depend on this instantiation,
   -- and close the transport.connections which they have open.
   -- By default, existing server tasks will continue to run
   -- until their clients (somewhere else in the network) close
   -- their connections.  If ABORT_SERVERS => TRUE, then the
   -- servers will be aborted immediately.

   -- Procedure finalize must be called before leaving a scope
   -- in which this package is instantiated (because of the Ada
   -- rules for task termination: see LRM section 9.4).

   -- In the cross-compiled version of this package (i.e. the
   -- one that uses shared elaboration), Finalize does nothing.

PRIVATE
   TYPE Pool_Type (Network_Length, Local_Socket_Length : Natural);
   TYPE Pool_Id IS ACCESS Pool_Type;
   TYPE Pool_Type (Network_Length, Local_Socket_Length : Natural) IS
      RECORD
         Servers      : Natural := 0;
         Max_Servers  : Natural;
         Network      : Transport_Defs.Network_Name (1 .. Network_Length);
         Local_Socket : Transport_Defs.Socket_Id (1 .. Local_Socket_Length);
         Next         : Pool_Id;
      END RECORD;


END Transport_Server;