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

⟦8869808e9⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Trans, seg_0538c7

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 Text_Io;
with Transport;  
with Transport_Defs;
with Byte_Defs;
with Utils;
with Message;
with Bounded_String;

package body Trans is
    task Reception;
    task Emission;

    task body Reception is

        The_Mess : Message.Tmessage;
        The_Content : Message.Content_String;
        The_Command : Message.Command_Type;  
        The_Receive : Message.Data_String;

        Name_Of_Network : constant Transport_Defs.Network_Name := "TCP/IP";  
        Orb_Socket : constant Transport_Defs.Socket_Id := (2, 6, 0, 2);
        Host : constant Transport_Defs.Host_Id :=
           Transport.Local_Host (Name_Of_Network);

        Connexion1 : Transport.Connection_Id;  
        Status1 : Transport_Defs.Status_Code;
        From_Transmitter : Byte_Defs.Byte_String (0 .. 255);
        Cpt : Natural;  
        Try : Natural := 2;

    begin
        loop
            Transport.Open (Connexion1, Status1, Name_Of_Network, Orb_Socket);
            if Transport.Is_Open (Connexion1) then
                Text_Io.Put_Line ("Connexion is open for the reveiver.");
            else
                Text_Io.Put_Line ("Can't open connexion for the receiver.");
                Try := Try - 1;
            end if;  
            exit when (Try = 0 or Transport.Is_Open (Connexion1));
        end loop;

        Text_Io.Put_Line ("Receiver is waiting for a connecxion ...");

        while not Transport.Is_Connected (Connexion1) loop

            Transport.Connect (Connexion1, Status1);  
            Text_Io.Put_Line ("Status receiver : " &
                              Transport_Defs.Image (Status1));
        end loop;

        Text_Io.Put_Line ("Someone is connected to the receiver.");

        loop
            Transport.Receive (Connexion1, Status1, From_Transmitter, Cpt);
            exit when Transport_Defs.Image (Status1) = "OK";

        end loop;

        Bounded_String.Copy
           (Target => The_Receive,
            Source => Utils.Byte_String_To_String (From_Transmitter)
                         (1 .. Cpt));  
        Message.Unfill (Data => The_Receive, Mess => The_Mess);
        Message.Unfill_Command (Comm => The_Command, Mess => The_Mess);
        Message.Unfill_Content (Cont => The_Content, Mess => The_Mess);
        Text_Io.Put_Line ("Message : " &
                          Message.Command_Type'Image (The_Command) & "..." &
                          Bounded_String.Image (The_Content));

        Transport.Close (Connexion1);
    end Reception;



    task body Emission is

        The_Mess : Message.Tmessage;
        The_Content : Message.Content_String;
        The_Command : Message.Command_Type;  
        To_Transmit : Message.Data_String;

        Name_Of_Network : constant Transport_Defs.Network_Name := "TCP/IP";
        Orb_Socket : constant Transport_Defs.Socket_Id := (2, 6, 0, 2);


        Connexion1 : Transport.Connection_Id;  
        Status1 : Transport_Defs.Status_Code;
        From_Transmitter : Byte_Defs.Byte_String (0 .. 255);
        Cpt : Natural;  
        Try : Positive := 2;

    begin
        loop
            Transport.Open (Connexion1, Status1, Name_Of_Network);
            if Transport.Is_Open (Connexion1) then
                Text_Io.Put_Line ("Connecxion is open for the transmitter.");
            else
                Text_Io.Put_Line ("Can't open connecxion for transmitter");
                Try := Try - 1;
            end if;  
            exit when (Try = 0 or Transport.Is_Open (Connexion1));
        end loop;

        Text_Io.Put_Line ("Try to contact (2602)...");

        while not Transport.Is_Connected (Connexion1) loop

            Transport.Connect
               (Connexion1, Status1,
                Transport.Local_Host (Name_Of_Network), Orb_Socket);
            Text_Io.Put_Line ("Status emet : " &
                              Transport_Defs.Image (Status1));
        end loop;

        Text_Io.Put_Line ("(2602) is connected");  
        The_Command := Message.Registration;
        Bounded_String.Copy (Target => The_Content, Source => "I can do that");
        Message.Fill_Content (Mess => The_Mess, Cont => The_Content);
        Message.Fill_Command (Mess => The_Mess, Comm => The_Command);
        Message.Fill (Data => To_Transmit, Mess => The_Mess);


        Transport.Transmit
           (Connexion1, Status1,
            Utils.String_To_Byte_String (Bounded_String.Image (To_Transmit)),
            Cpt);


        Transport.Close (Connexion1);
    end Emission;

end Trans;

E3 Meta Data

    nblk1=7
    nid=0
    hdr6=e
        [0x00] rec0=23 rec1=00 rec2=01 rec3=00a
        [0x01] rec0=00 rec1=00 rec2=05 rec3=02e
        [0x02] rec0=1c rec1=00 rec2=02 rec3=00c
        [0x03] rec0=1a rec1=00 rec2=06 rec3=01c
        [0x04] rec0=07 rec1=00 rec2=03 rec3=07c
        [0x05] rec0=18 rec1=00 rec2=04 rec3=054
        [0x06] rec0=0f rec1=00 rec2=07 rec3=001
    tail 0x2175b7bc487ae662f5050 0x42a00088462060003