DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦851769fc0⟧ Ada Source

    Length: 17408 (0x4400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Transport, pragma Module_Name 4 2509, pragma Subsystem Network, seg_0128f1

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with Byte_Defs;
with Machine;
with Transport_Defs;

package Transport is

    pragma Subsystem (Network, Private_Part => Closed);
    pragma Module_Name (4, 2509);

    type Connection_Id is private;
    -- Identifies the local resources associated with a connection.

    Null_Connection_Id : constant Connection_Id;


    function Local_Host (Network : Transport_Defs.Network_Name)
                        return Transport_Defs.Host_Id;
    -- The ID which identifies your machine in the given NETWORK.


    -- All defined network_names can be scanned:

    type Network_Name_Iterator is limited private;
    procedure Init  (Iter : in out Network_Name_Iterator);
    procedure Next  (Iter : in out Network_Name_Iterator);
    function  Done  (Iter : Network_Name_Iterator) return Boolean;
    function  Value (Iter : Network_Name_Iterator)
                   return Transport_Defs.Network_Name;


    -- All open connection_id's can be scanned:

    type Connection_Id_Iterator is limited private;
    procedure Init  (Iter : in out Connection_Id_Iterator);
    procedure Next  (Iter : in out Connection_Id_Iterator);
    function  Done  (Iter : Connection_Id_Iterator) return Boolean;
    function  Value (Iter : Connection_Id_Iterator) return Connection_Id;


    procedure Open (Connection   : out Transport.Connection_Id;
                    Status       : out Transport_Defs.Status_Code;
                    Network      :     Transport_Defs.Network_Name;
                    Local_Socket :     Transport_Defs.Socket_Id :=
                       Transport_Defs.Null_Socket_Id);

    -- Allocate the local resources required to establish a
    -- connection.  Any subsequent connection which may be
    -- established will be via the given NETWORK, using the given
    -- LOCAL_SOCKET.  If LOCAL_SOCKET = NULL_SOCKET_ID, the
    -- transport service will invent a socket_id which is not
    -- currently in use, and assign it to this connection.


    procedure Close (Connection : Transport.Connection_Id);

    -- Deallocate local resources.
    -- If the connection is connected, disconnect it.
    -- If the connection is not open, do nothing.


    procedure Connect (Connection    :     Transport.Connection_Id;
                       Status        : out Transport_Defs.Status_Code;
                       Remote_Host   :     Transport_Defs.Host_Id;
                       Remote_Socket :     Transport_Defs.Socket_Id;
                       Max_Wait      :     Duration := Duration'Last);

    -- Initiate a connection to the specified remote host and socket.
    -- The CONNECTION must be open.


    procedure Connect (Connection :     Transport.Connection_Id;
                       Status     : out Transport_Defs.Status_Code;
                       Max_Wait   :     Duration := Duration'Last);

    -- Wait for a connection initiated by some other task.
    -- The CONNECTION must be open.


    procedure Disconnect (Connection : Transport.Connection_Id);

    -- Break a connection.
    -- If the CONNECTION is not connected, do nothing.


    function Is_Open      (Connection : Transport.Connection_Id) return Boolean;
    function Is_Connected (Connection : Transport.Connection_Id) return Boolean;
    --  function is_connecting_passive
    --                        (connection : transport.connection_id)
    --                          return Boolean;
    --  function is_connecting_active
    --                        (connection : transport.connection_id)
    --                          return Boolean;
    function Network       (Connection : Transport.Connection_Id)
                     return Transport_Defs.Network_Name;
    function Local_Host    (Connection : Transport.Connection_Id)
                        return Transport_Defs.Host_Id;
    function Local_Socket  (Connection : Transport.Connection_Id)
                          return Transport_Defs.Socket_Id;
    function Remote_Host   (Connection : Transport.Connection_Id)
                         return Transport_Defs.Host_Id;
    function Remote_Socket (Connection : Transport.Connection_Id)
                           return Transport_Defs.Socket_Id;


    procedure Transmit (Connection :     Transport.Connection_Id;
                        Status     : out Transport_Defs.Status_Code;
                        Data       :     Byte_Defs.Byte_String;
                        Count      : out Natural;
                        Max_Wait   :     Duration := Duration'Last;
                        More       :     Boolean  := False);

    -- Transmit some data.  The CONNECTION must be connected.
    -- STATUS is returned OK, unless the connection is broken.
    -- DATA is the data to be transmitted.  COUNT is returned the
    -- number of bytes actually transmitted.  This may differ
    -- from DATA'LENGTH if the connection breaks, or if the
    -- operation times out.

    -- MAX_WAIT is the maximum amount of time to spend trying to
    -- transmit the data.  The operation completes when all the
    -- DATA bytes have been transmitted, or when MAX_WAIT
    -- expires, whichever comes first.

    -- MORE indicates that the service may hold the data in its
    -- local buffers, to be combined with more data which the
    -- client is about to transmit.  This is a performance hint
    -- only: the service is free to ignore it and transmit all
    -- data as soon as it gets it.

    -- This operation may simply store data in a local buffer,
    -- and actually transmit it at some future opportunity.  If
    -- buffering is involved, the service assumes responsibility
    -- for transmitting the buffered data.


    procedure Receive (Connection :     Transport.Connection_Id;
                       Status     : out Transport_Defs.Status_Code;
                       Data       : out Byte_Defs.Byte_String;
                       Count      : out Natural;
                       Max_Wait   :     Duration := Duration'Last);

    -- Receive some data.  The CONNECTION must be connected.
    -- STATUS is returned OK, unless the connection is broken.
    -- DATA is the buffer into which to store received data.
    -- COUNT is returned the number of bytes actually stored.
    -- This may be less than DATA'LENGTH.

    -- MAX_WAIT is the maximum amount of time to spend waiting
    -- to receive some data.  The operation completes when one
    -- or more DATA bytes have been received, or when MAX_WAIT
    -- expires, whichever comes first.

    -- This procedure does not wait to fill up the DATA buffer.
    -- As soon as ANY data are received, it returns them.


    function Hash (Connection : Transport.Connection_Id) return Natural;
    -- Calculate a value suitable for hashing.


    -- Each connection is owned by some job.
    -- By default, a connection is owned by the job which opens it.   -- Whenever a job terminates, all connections owned by it are
    -- automatically closed.

    procedure Set_Owner (Connection : Transport.Connection_Id;
                         Owner      : Machine.Job_Id);

    -- Set the owner of the connection.  This procedure allows
    -- a connection to be given away to some other job.

    function Get_Owner (Connection : Transport.Connection_Id)
                       return Machine.Job_Id;

    -- Return the owner of the connection.

    procedure Close_All (Owner : Machine.Job_Id);

    -- Close all connections owned by the given Owner.
    -- This happens automatically when the Owner terminates.

    function Is_Connecting_Passive
                (Connection : Transport.Connection_Id) return Boolean;
    function Is_Connecting_Active
                (Connection : Transport.Connection_Id) return Boolean;

    pragma Consume_Offset (4);

    -- The following 3 operations were invented to support AX25.
    -- Set_ and Get_Options allow the user to select values of
    -- various protocol parameters (for example, packet size,
    -- window size, timeouts).  Get_Statistics allows the user
    -- to monitor the operation of the protocol.

    -- For AX25, the Context string is the 'image (ASCII decimal)
    -- of the port number of a port used for AX25 communication.

    function Set_Options (Network : Transport_Defs.Network_Name;
                          Context : String := "";
                          Options : String := "") -- new option values
                         return String;
    -- The Options string is a sequence of option name/value
    -- pairs, using the option parser syntax "<name>=<value>,...".
    -- The return value is "" if the operation succeeded.
    -- A non-null value is an error message, which may contain
    -- ASCII.LF's to indicate line breaks.

    function Get_Options (Network : Transport_Defs.Network_Name;
                          Context : String := "")
                         return String; -- all option values
    -- The return value is a list of all current options
    -- and their current values, in the same syntax as
    -- Set_Options.Options.  A null value indicates that
    -- the Network/Context pair is not defined or has no
    -- options.

    function Get_Statistics
                (Network : Transport_Defs.Network_Name; Context : String := "")
                return String;
    -- The return value is a list of all current statistics and
    -- their values, in a syntax similar to Set_Options.Options.
    -- A null value indicates that the Network/Context pair is
    -- not defined or has no statistics.

    package Route is
        -- A table of 4-tuples, used for Transport level routing.
        -- See package Transport_Route for background information.

        procedure Define (Network     :     Transport_Defs.Network_Name;
                          Destination :     Transport_Defs.Host_Id;
                          Subnet_Mask :     Transport_Defs.Host_Id;
                          Route       :     Transport_Defs.Host_Id;
                          Status      : out Transport_Defs.Status_Code);

        procedure Undefine (Network     :     Transport_Defs.Network_Name;
                            Destination :     Transport_Defs.Host_Id;
                            Subnet_Mask :     Transport_Defs.Host_Id;
                            Route       :     Transport_Defs.Host_Id;
                            Status      : out Transport_Defs.Status_Code);

        type Iterator is private;
        procedure Init (Iter : out Iterator);
        procedure Next (Iter : in out Iterator);
        function  Done (Iter : Iterator) return Boolean;
        function  Network (Iter : Iterator) return Transport_Defs.Network_Name;
        function  Destination (Iter : Iterator) return Transport_Defs.Host_Id;
        function  Subnet_Mask (Iter : Iterator) return Transport_Defs.Host_Id;
        function  Route (Iter : Iterator) return Transport_Defs.Host_Id;

    end Route;


end Transport;

E3 Meta Data

    nblk1=10
    nid=0
    hdr6=20
        [0x00] rec0=21 rec1=00 rec2=01 rec3=000
        [0x01] rec0=01 rec1=00 rec2=10 rec3=00a
        [0x02] rec0=12 rec1=00 rec2=02 rec3=052
        [0x03] rec0=00 rec1=00 rec2=0f rec3=00a
        [0x04] rec0=19 rec1=00 rec2=03 rec3=044
        [0x05] rec0=16 rec1=00 rec2=04 rec3=048
        [0x06] rec0=00 rec1=00 rec2=0e rec3=01e
        [0x07] rec0=13 rec1=00 rec2=05 rec3=036
        [0x08] rec0=01 rec1=00 rec2=0d rec3=000
        [0x09] rec0=15 rec1=00 rec2=06 rec3=038
        [0x0a] rec0=18 rec1=00 rec2=07 rec3=002
        [0x0b] rec0=1a rec1=00 rec2=08 rec3=080
        [0x0c] rec0=14 rec1=00 rec2=09 rec3=032
        [0x0d] rec0=15 rec1=00 rec2=0a rec3=05a
        [0x0e] rec0=11 rec1=00 rec2=0b rec3=058
        [0x0f] rec0=07 rec1=00 rec2=0c rec3=000
    tail 0x2150d91c282b0831d2db4 0x42a00088462065003