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

⟦05527be44⟧ Ada Source

    Length: 11264 (0x2c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Date_Client, seg_056ce4

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 Constant_Start_End, All_String;
with Com_Defs, T_Message, T_Status;  
with Text_Manager;

package body Date_Client is

    My_Receive_Frame : My_Message.T_Frame;
    My_Send_Frame : My_Message.T_Frame;
    My_Status : Boolean := False;
    My_Status1 : Boolean := False;
    My_Status2 : Boolean := False;  
    Stop : Boolean := False;
    Orb_Appli_Number : constant Com_Defs.Com_Number := 0;
    My_Appli_Number : Com_Defs.Com_Number;  
    My_Quest_Number : Com_Defs.Com_Number := 0;
    My_Quest_Number1 : Com_Defs.Com_Number := 1;  
    My_Quest_Number2 : Com_Defs.Com_Number := 2;

    My_Data_To_Send : Com_Defs.V_String;

    My_Adress_String_And_Apply_Number :
       All_String.Adress_String_And_Apply_Number;
    My_Adress_String : All_String.Adress_String;
    My_Machine_Name, My_Adress_Ip : Com_Defs.V_String;
    Null_Data : Com_Defs.V_String := Com_Defs.Value ("");

    My_Integer_Type_Of_Message : Integer;
    My_Integer_Type_Of_Status : Integer;  
    My_Type_Of_Message : T_Message.T_Mess := T_Message.Response;
    My_Type_Of_Status : T_Status.T_State := T_Status.Client_To_Orb;

    My_V_String_Data : Com_Defs.V_String;
    My_Request1 : String (1 .. 34) := "calendar/date/give_the_date/0/null";
    My_Request2 : String (1 .. 13) := "calendar/date";
    Compteur : Natural := 0;

    procedure Init is
    begin  
        My_Message.Init (My_Appli_Number, My_Machine_Name,
                         My_Adress_Ip, My_Status);  
        My_Message.Init_T_Frame (My_Send_Frame, My_Adress_Ip,
                                 My_Appli_Number, My_Quest_Number);
    end Init;


    procedure Treatment_Of_The_Response is
    begin  
        Compteur := Compteur + 1;
        Text_Manager.Text.Put_Line ("CLIENT has received : " &
                                    My_Message.Image (My_Receive_Frame));
        My_Integer_Type_Of_Message :=
           My_Message.Read_Type_Of_Message (My_Receive_Frame);
        My_Message.Copy (My_Send_Frame, My_Receive_Frame);
        case My_Integer_Type_Of_Message is
            when T_Message.T_Mess'Pos (T_Message.Response) =>  
                begin
                    Text_Manager.Text.Put_Line
                       ("CLIENT : The response is arrived : ");
                    My_Message.Put_Data (My_Receive_Frame);
                end;
            when T_Message.T_Mess'Pos (T_Message.Error) =>  
                begin
                    Text_Manager.Text.Put_Line
                       ("CLIENT : Your request has no response");
                end;
            when others =>
                Text_Manager.Text.Put_Line
                   ("CLIENT : type of message is unknown");
        end case;  
    end Treatment_Of_The_Response;

    task body Go_Client is
    begin
        delay (240.0);
        Init;

-- REGISTRATION
        My_Message.Init_Data_Message (My_Machine_Name, My_Send_Frame);
        Text_Manager.Text.Put_Line ("CLIENT has sent : " &
                                    My_Message.Image (My_Send_Frame));  
        My_Message.Send (Orb_Appli_Number, Com_Defs.Orb_Name_Machine_V_String,
                         T_Message.Registration, My_Type_Of_Status,
                         My_Send_Frame, My_Status);

-- REQUEST SERVICE
        My_Message.Init_T_Frame (My_Send_Frame, My_Adress_Ip,  
                                 My_Appli_Number, My_Quest_Number1);
        My_Message.Remove_Data (My_Send_Frame);
        My_V_String_Data := My_Message.Value (My_Request1);
        My_Message.Init_Data_Message (My_V_String_Data, My_Send_Frame);
        Text_Manager.Text.Put_Line ("CLIENT has sent : " &
                                    My_Message.Image (My_Send_Frame));  
        My_Message.Send (Orb_Appli_Number, Com_Defs.Orb_Name_Machine_V_String,
                         T_Message.Request_Service, My_Type_Of_Status,
                         My_Send_Frame, My_Status);


-- REQUEST METHODS
        My_Message.Init_T_Frame (My_Send_Frame, My_Adress_Ip,  
                                 My_Appli_Number, My_Quest_Number2);
        My_Message.Remove_Data (My_Send_Frame);
        My_V_String_Data := My_Message.Value (My_Request2);
        My_Message.Init_Data_Message (My_V_String_Data, My_Send_Frame);
        Text_Manager.Text.Put_Line ("CLIENT has sent : " &
                                    My_Message.Image (My_Send_Frame));  
        My_Message.Send (Orb_Appli_Number, Com_Defs.Orb_Name_Machine_V_String,
                         T_Message.Request_Method, My_Type_Of_Status,
                         My_Send_Frame, My_Status);

        loop  
            delay (30.0);  
            Text_Manager.Text.Put_Line
               ("CLIENT : tests if something is arrived");
            My_Message.Receive (My_Appli_Number, My_Receive_Frame, My_Status);
-- POUR L'INSTANT, ON NE TESTE LE Numero de QUEST
            if My_Status then
                Treatment_Of_The_Response;  
            end if;
            -- Text_Manager.Text.Put_Line ("client : test receive");
            if Compteur = 2 then
-- on sortira de la boucle principale apres avoir recu les deux reponses attendues
-- de maniere a simuler un Unregistration
                Stop := True;
            end if;  
            exit when Stop;
        end loop;

        My_Message.Init_T_Frame (My_Send_Frame, My_Adress_Ip,
                                 My_Appli_Number, My_Quest_Number);
-- UNREGISTRATION
        My_Message.Init_Data_Message (Null_Data, My_Send_Frame);
        Text_Manager.Text.Put_Line ("CLIENT has sent : " &
                                    My_Message.Image (My_Send_Frame));
        My_Message.Send (Orb_Appli_Number, Com_Defs.Orb_Name_Machine_V_String,
                         T_Message.Unregistration, My_Type_Of_Status,
                         My_Send_Frame, My_Status);

-- On desalloue notre numero d'application
        My_Message.Remove (My_Appli_Number);
    end Go_Client;
end Date_Client;

E3 Meta Data

    nblk1=a
    nid=6
    hdr6=e
        [0x00] rec0=1d rec1=00 rec2=01 rec3=03a
        [0x01] rec0=18 rec1=00 rec2=0a rec3=07c
        [0x02] rec0=1b rec1=00 rec2=05 rec3=028
        [0x03] rec0=12 rec1=00 rec2=02 rec3=000
        [0x04] rec0=14 rec1=00 rec2=04 rec3=01a
        [0x05] rec0=16 rec1=00 rec2=08 rec3=00e
        [0x06] rec0=03 rec1=00 rec2=03 rec3=000
        [0x07] rec0=15 rec1=00 rec2=08 rec3=058
        [0x08] rec0=03 rec1=00 rec2=06 rec3=000
        [0x09] rec0=30 rec1=00 rec2=20 rec3=000
    tail 0x217634f3a87c556052a49 0x42a00088462060003
Free Block Chain:
  0x6: 0000  00 07 00 04 80 01 6e 01 20 20 65 6e 64 20 47 6f  ┆      n   end Go┆
  0x7: 0000  00 09 03 fc 80 30 61 67 65 2e 49 6e 69 74 5f 54  ┆     0age.Init_T┆
  0x9: 0000  00 00 00 44 80 05 61 6d 65 29 3b 05 00 39 20 20  ┆   D  ame);  9  ┆