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

⟦974bd658e⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Server_Object, seg_055a67, seg_05620f

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 Answers_Array;
with Bal;  
with Bls_Constant;
with Parametre_Defs;
with Parametre;
with Bounded_String;
with Liste_Parametre;
with Message;
with Display_Mess;
with Channel_Operator;
with My_Channel_User;
with String_Utilities;
with Task_Io;

package body Server_Object is

    My_Channel : My_Channel_User.Object;
    task T_Server_Object is
        entry Dispose;
    end T_Server_Object;
    procedure Dispose is
    begin
        T_Server_Object.Dispose;
    end Dispose;

    task body T_Server_Object is
        Mess : Message.Object;
        Mess_Ret : Message.Object;
        Typ : Parametre_Defs.Message_Type;
        My_List : Liste_Parametre.List;
        My_List_Ret : Liste_Parametre.List;
        My_Index : Integer;
        My_Class : Parametre.Variable_String;
        My_Method : Parametre.Variable_String;
        Result : Boolean;
        Continue : Boolean := True;
    begin
        Task_Io.Put_Line ("debut de la partie serveur de l objet");
        loop
            select
                accept Dispose do
                    Continue := False;
                end Dispose;
            else

                if not Bal.Is_Empty then
                    Bal.Get (Mess);
                    Task_Io.Put_Line
                       ("le serveur de l objet a recu quelque chose");
                    Typ := Message.Get_Type (Mess);
                    My_List := Message.Get_Containt (Mess);
                    My_Class := Liste_Parametre.First (My_List);
                    My_List := Liste_Parametre.Rest (My_List);
                    My_Method := Liste_Parametre.First (My_List);
                    My_List := Liste_Parametre.Rest (My_List);
                    My_Index := Integer'Value (String
                                                  (Message.Get_Number (Mess)));
                    Display_Mess.Get_Type (Mess);
                    case Typ is
                        when Parametre_Defs.Answe =>
                            Task_Io.Put_Line
                               ("le serveur de l objet a une reponse");
                            Task_Io.Put_Line ("index reponse" &
                                              Integer'Image (My_Index));
                            Answers_Array.Put
                               (Answers_Array.Index (My_Index),
                                Message.Get_Emet (Mess), My_List);
                            Task_Io.Put_Line ("fin pour reponse");
                        when Parametre_Defs.Subsc =>
                            Subscription_Treatement
                               (Message.Get_Emet (Mess),
                                Bounded_String.Image (My_Class),
                                Bounded_String.Image (My_Method), My_List);
                        when Parametre_Defs.Reque =>
                            Task_Io.Put_Line
                               ("le serveur de l objet a recu un request");
                            Task_Io.Put_Line ("index de request est" &
                                              Integer'Image (My_Index));

                            My_List_Ret := Liste_Parametre.Make
                                              (My_Class, My_List_Ret);  
                            My_List_Ret := Liste_Parametre.Make
                                              (My_Method, My_List_Ret);

                            Server_Work (Bounded_String.Image (My_Method),
                                         My_List, My_List_Ret);
                            Task_Io.Put_Line
                               ("le serveur va contruire la reponse");

                            Task_Io.Put_Line ("la liste du serveur est prete");
                            Message.Create
                               (Mess_Ret, Message.Get_Dest (Mess),
                                Message.Get_Emet (Mess), Parametre_Defs.Answe,
                                Parametre_Defs.Message_Number
                                   (Integer'Image (My_Index)), My_List_Ret);
                            Task_Io.Put_Line ("le message de reponse est cree");
                            My_Channel_User.Init
                               (My_Channel, Bls_Constant.Orb_Socket,
                                Bls_Constant.Orb_Host, Result);
                            Task_Io.Put_Line ("init channel dans serveur ok");
                            if Result then
                                Message.Send (Mess_Ret, My_Channel);
                            end if;
                            Task_Io.Put_Line ("reponse est envoyee");
                            My_Channel_User.Close (My_Channel);
                        when others =>
                            null;
                    end case;

                end if;
            end select;
            exit when not Continue;
        end loop;

    end T_Server_Object;



end Server_Object;

E3 Meta Data

    nblk1=7
    nid=6
    hdr6=c
        [0x00] rec0=27 rec1=00 rec2=01 rec3=050
        [0x01] rec0=16 rec1=00 rec2=02 rec3=02e
        [0x02] rec0=10 rec1=00 rec2=07 rec3=070
        [0x03] rec0=12 rec1=00 rec2=03 rec3=022
        [0x04] rec0=15 rec1=00 rec2=05 rec3=02c
        [0x05] rec0=05 rec1=00 rec2=04 rec3=000
        [0x06] rec0=68 rec1=5c rec2=00 rec3=000
    tail 0x217608f2887bf595b7b24 0x42a00088462060003
Free Block Chain:
  0x6: 0000  00 00 02 7a 80 31 20 20 20 20 20 28 22 6c 65 20  ┆   z 1     ("le ┆