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

⟦7342b2f57⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Com_Trans_Orb, seg_054950

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 Transport, Transport_Defs, Byte_Defs, Text_Io;
package body Com_Trans_Orb is
    task body Orb_Receiver is
        Connection : Transport.Connection_Id;
        Status : Transport_Defs.Status_Code;
        Network_Name : constant Transport_Defs.Network_Name := "TCP/IP";
        Count : Natural;
        Receive_Socket_Data : Byte_Defs.Byte_String (1 .. 2);
        Receive_Host_Data : Byte_Defs.Byte_String (1 .. 4);
        Receive_Data : Byte_Defs.Byte_String (1 .. 500);
        Init_Flag : Boolean;
        New_Machine : Byte_Defs.Byte := 0;
    begin
        loop
            select
                accept Init (Init_Host_Answer : in Transport_Defs.Host_Id;
                             Init_Socket_Answer : in
                                Transport_Defs.Socket_Id) do
                    begin
                        loop
                            Transport.Open (Connection, Status, Network_Name,
                                            Init_Socket_Answer);  
                            exit when Transport.Is_Open (Connection) = True;
                        end loop;
                    end;
                    Text_Io.Put_Line ("Orb is opened");
                    loop
                        Transport.Connect (Connection, Status, Duration'Last);
                        exit when Transport.Is_Connected (Connection) = True;
                    end loop;
                    Text_Io.Put_Line ("Orb is passive connected");
                    Init_Flag := True;
                end Init;
            end select;
            exit when Init_Flag = True;
        end loop;
        loop
            loop
                Transport.Receive (Connection, Status, Receive_Data,
                                   Count, Duration'Last);
                exit when Transport_Defs."=" (Status, Transport_Defs.Ok);
            end loop;
            if Byte_Defs."=" (Receive_Data (1), New_Machine) = True then
                Receive_Host_Data := Receive_Data (2 .. 5);
                Receive_Socket_Data := Receive_Data (6 .. 7);
                Text_Io.Put_Line ("new machine encountered");
                Orb_Transmitter.Init
                   (Transport_Defs.Host_Id (Receive_Host_Data),
                    Transport_Defs.Socket_Id (Receive_Socket_Data));
            else
                null;
            end if;
        end loop;
    end Orb_Receiver;


    task body Orb_Transmitter is
        Connection : Transport.Connection_Id;
        Status : Transport_Defs.Status_Code;
        Network_Name : constant Transport_Defs.Network_Name := "TCP/IP";
        Count : Natural;
        Receive_Data : Byte_Defs.Byte_String (1 .. 500);
    begin
        loop
            select
                accept Init (Init_Host_Answer : in Transport_Defs.Host_Id;
                             Init_Socket_Answer : in
                                Transport_Defs.Socket_Id) do
                    begin
                        loop
                            Transport.Open (Connection, Status, Network_Name);  
                            exit when Transport.Is_Open (Connection) = True;
                        end loop;
                        Text_Io.Put_Line ("Orb transmitter is opened");
                        loop
                            Transport.Connect
                               (Connection, Status, Init_Host_Answer,
                                Init_Socket_Answer, Duration'Last);
                            exit when
                               Transport.Is_Connected (Connection) = True;
                        end loop;
                        Text_Io.Put_Line ("Orb is active connected");
                    end;

                end Init;
            end select;
        end loop;
    end Orb_Transmitter;
end Com_Trans_Orb;

E3 Meta Data

    nblk1=4
    nid=0
    hdr6=8
        [0x00] rec0=17 rec1=00 rec2=01 rec3=070
        [0x01] rec0=16 rec1=00 rec2=02 rec3=024
        [0x02] rec0=19 rec1=00 rec2=03 rec3=028
        [0x03] rec0=15 rec1=00 rec2=04 rec3=001
    tail 0x2175da89687b8878b5b3d 0x42a00088462060003