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

⟦d5b62acfa⟧ Ada Source

    Length: 12288 (0x3000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Physical_Layer, seg_026d11

Derivation

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

E3 Source Code



with My_String;
with Socket_Defs;
with Socket_Port;
with System;
with Ada_C;


package body Physical_Layer is

    procedure Get_Host_Name_C (The_Buffer        : in System.Address;
                               The_Buffer_Length :    Integer);

    pragma Interface (C, Get_Host_Name_C);
    pragma Interface_Information (Get_Host_Name_C, ".gethostname");


    procedure Get_Host_Name (The_Host_Name : in out My_String.Object) is  
    begin  
        The_Host_Name := My_String.Object'
                            (The_Size   => Socket_Defs.Host_Name_Length,
                             The_String => (others => ' '));

        Get_Host_Name_C (The_Host_Name.The_String
                            (The_Host_Name.The_String'First)'Address,
                         Socket_Defs.Host_Name_Length);
    end Get_Host_Name;





    procedure Close_Socket_C (The_Socket_Id : Socket_Defs.Socket_Id);
    pragma Interface (C, Close_Socket_C);
    pragma Interface_Information (Close_Socket_C, ".Close_Socket");


    procedure Close_Socket (The_Socket_Id : Socket_Defs.Socket_Id) is
    begin
        Close_Socket_C (The_Socket_Id);
    end Close_Socket;





    procedure Create_Socket_C (The_Socket_Port : System.Address;
                               The_Socket_Type : Integer;
                               The_New_Socket  : System.Address);
    pragma Interface (C, Create_Socket_C);
    pragma Interface_Information (Create_Socket_C, ".Create_Socket");


    procedure Create_Socket (The_Socket_Port : in out Socket_Port.Object;
                             The_Socket_Type : in     Integer;
                             The_New_Socket  : out    Socket_Defs.Socket_Id) is
        The_Value_Of_The_Socket_Port : Natural;
    begin  
        The_Value_Of_The_Socket_Port := Socket_Port.Value (The_Socket_Port);
        Create_Socket_C (The_Value_Of_The_Socket_Port'Address,
                         The_Socket_Type, The_New_Socket'Address);  
        The_Socket_Port := Socket_Port.Create (The_Value_Of_The_Socket_Port);
    end Create_Socket;







    function Create_Server_C (The_Server_Socket_Port : Natural)
                             return Socket_Defs.Socket_Id;
    pragma Interface (C, Create_Server_C);
    pragma Interface_Information (Create_Server_C, ".Create_Server");


    function Create_Server (The_Server_Socket_Port : in Socket_Port.Object)
                           return Socket_Defs.Socket_Id is  
        The_Value_Of_The_Server_Socket_Port : Natural;
        The_Result                          : Socket_Defs.Socket_Id;
    begin
        The_Value_Of_The_Server_Socket_Port :=
           Socket_Port.Value (The_Server_Socket_Port);
        return Create_Server_C (The_Value_Of_The_Server_Socket_Port);
    end Create_Server;







    function Server_Wait_For_A_Connection_C
                (The_Listen_Socket : Socket_Defs.Socket_Id)
                return Socket_Defs.Socket_Id;
    pragma Interface (C, Server_Wait_For_A_Connection_C);
    pragma Interface_Information (Server_Wait_For_A_Connection_C,
                                  ".Server_Wait_For_A_Connection");


    function Server_Wait_For_A_Connection
                (The_Listen_Socket : in Socket_Defs.Socket_Id)
                return Socket_Defs.Socket_Id is
    begin
        return Server_Wait_For_A_Connection_C (The_Listen_Socket);
    end Server_Wait_For_A_Connection;






    function Join_Server_C (The_Server_Name        : System.Address;
                            The_Server_Socket_Port : Natural)
                           return Socket_Defs.Socket_Id;
    pragma Interface (C, Join_Server_C);
    pragma Interface_Information (Join_Server_C, ".Join_Server");

    function Join_Server (The_Server_Name        : in My_String.Object;
                          The_Server_Socket_Port : in Socket_Port.Object)
                         return Socket_Defs.Socket_Id is
        The_Value_Of_The_Server_Socket_Port : Natural;
    begin
        The_Value_Of_The_Server_Socket_Port :=
           Socket_Port.Value (The_Server_Socket_Port);
        return Join_Server_C (The_Server_Name.The_String
                                 (The_Server_Name.The_String'First)'Address,
                              The_Value_Of_The_Server_Socket_Port);
    end Join_Server;





    procedure Send_String_C (The_Remote_Socket_Id : Socket_Defs.Socket_Id;
                             The_Buffer_To_Send : System.Address;
                             The_Length_Of_Buffer_To_Send : Integer;
                             The_Number_Of_Characters_Sent : System.Address);
    pragma Interface (C, Send_String_C);
    pragma Interface_Information (Send_String_C, ".Send_String");


    procedure Send_String (The_Remote_Socket_Id : in Socket_Defs.Socket_Id;
                           The_Buffer_To_Send : in out My_String.Object;
                           The_Number_Of_Characters_Sent : out Integer  
                           ) is
        The_C_Buffer : constant String :=
           Ada_C.String_Ada_To_C (The_Buffer_To_Send.The_String);
    begin
        Send_String_C (The_Remote_Socket_Id,
                       The_C_Buffer (The_C_Buffer'First)'Address,
                       The_Buffer_To_Send.The_Size,
                       The_Number_Of_Characters_Sent'Address);
    end Send_String;





    procedure Receive_String_C
                 (The_Remote_Socket_Id              : Socket_Defs.Socket_Id;
                  The_Buffer_To_Receive             : System.Address;
                  The_Length_Of_Buffer_To_Receive   : Integer;  
                  The_Number_Of_Caracteres_Received : System.Address);
    pragma Interface (C, Receive_String_C);
    pragma Interface_Information (Receive_String_C, ".Receive_String");


    procedure Receive_String
                 (The_Remote_Socket_Id              : in Socket_Defs.Socket_Id;
                  The_Buffer_To_Receive             : in out My_String.Object;  
                  The_Number_Of_Characters_Received : in out Integer) is

        The_Tmp_Received_Buffer : My_String.Object (My_String.Max_Range'Last);

        -- The_C_Buffer            : constant String := Ada_C.String_Ada_To_C (The_Tmp_Received_Buffer);

    begin

        Receive_String_C (The_Remote_Socket_Id,
                          The_Tmp_Received_Buffer.The_String
                             (The_Tmp_Received_Buffer.The_String'First)'Address,
                          The_Tmp_Received_Buffer.The_Size,
                          The_Number_Of_Characters_Received'Address);

        The_Buffer_To_Receive :=
           My_String.Object'
              (The_Size   => The_Number_Of_Characters_Received,
               The_String => The_Tmp_Received_Buffer.The_String
                                (1 .. The_Number_Of_Characters_Received));

        -- Receive_String_C (The_Remote_Socket_Id, The_Buffer_To_Receive (The_Buffer_To_Receive'First)'Address,
        --                   The_Length_Of_Buffer_To_Receive, The_Number_Of_Caracteres_Received'Address);




    end Receive_String;

end Physical_Layer;

E3 Meta Data

    nblk1=b
    nid=b
    hdr6=12
        [0x00] rec0=23 rec1=00 rec2=01 rec3=010
        [0x01] rec0=17 rec1=00 rec2=0a rec3=016
        [0x02] rec0=1a rec1=00 rec2=03 rec3=04e
        [0x03] rec0=00 rec1=00 rec2=09 rec3=032
        [0x04] rec0=22 rec1=00 rec2=04 rec3=000
        [0x05] rec0=17 rec1=00 rec2=05 rec3=05a
        [0x06] rec0=19 rec1=00 rec2=06 rec3=00c
        [0x07] rec0=17 rec1=00 rec2=07 rec3=01e
        [0x08] rec0=0d rec1=00 rec2=08 rec3=000
        [0x09] rec0=0d rec1=00 rec2=08 rec3=001
        [0x0a] rec0=b4 rec1=2f rec2=20 rec3=000
    tail 0x2172088ba83a37279dc95 0x42a00088783c7f403
Free Block Chain:
  0xb: 0000  00 02 03 fc 80 06 62 6a 65 63 74 27 06 00 4b 20  ┆      bject'  K ┆
  0x2: 0000  00 00 00 fa 80 24 65 74 5f 50 6f 72 74 20 3a 20  ┆     $et_Port : ┆