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

⟦3e9365d44⟧ Ada Source

    Length: 24576 (0x6000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Orb_Service, seg_05670c

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 Registrated_Object;
with Byte_Defs;
with Task_Io;
with Parametre, Liste_Parametre;
with Utils;
package body Orb_Service is
    procedure Registration (Mess : in out Message.Object) is
        Id : Object_Manager.Object_Id;
        The_Mess_2_Send : Message.Object;  
        Result : Boolean;
    begin

        Object_Manager.Add_Object (Data_Base, Id, Mess, The_Mess_2_Send);
        Object_Manager.Talk_To_Object (Data_Base, Id, The_Mess_2_Send, Result);
        if not Result then  
            Task_Io.Put_Line
               ("problem during a client registration =>cannot talk to him");
            Object_Manager.Remove_Object (D_B => Data_Base, Id => Id);

        end if;
        Task_Io.Put_Line ("after registration" &
                          Object_Manager.Image (Data_Base));
    end Registration;


    procedure Unregistration (Mess : in out Message.Object) is

    begin  
        Object_Manager.Remove_Object
           (Data_Base, Object_Manager.Object_Id (Message.Get_Emet (Mess)));
        Task_Io.Put_Line ("after unregistration" &
                          Object_Manager.Image (Data_Base));
    end Unregistration;


    procedure Publication (Mess : in out Message.Object) is
    begin  
        Object_Manager.Add_Method
           (Data_Base,
            Object_Manager.Object_Id (Message.Get_Emet (Mess)), Mess);
        Task_Io.Put_Line ("after publication " &
                          Object_Manager.Image (Data_Base));
    end Publication;


    procedure Unpublication (Mess : in out Message.Object) is
    begin
        Object_Manager.Remove_Method
           (Data_Base,
            Object_Manager.Object_Id (Message.Get_Emet (Mess)), Mess);
        Task_Io.Put_Line ("after unpublication " &
                          Object_Manager.Image (Data_Base));
    end Unpublication;


    procedure Subscription (Mess : in out Message.Object) is  
    begin  
        Task_Io.Put_Line ("suber" &
                          Utils.Byte_String_To_String
                             (Byte_Defs.Byte_String (Message.Get_Emet (Mess))));
        Task_Io.Put_Line ("subted" &
                          Utils.Byte_String_To_String
                             (Byte_Defs.Byte_String (Message.Get_Dest (Mess))));


        Object_Manager.Subscribe
           (Data_Base, Object_Manager.Object_Id (Message.Get_Emet (Mess)),
            Object_Manager.Object_Id (Message.Get_Dest (Mess)), Mess);
        Task_Io.Put_Line ("after subscription " &
                          Object_Manager.Image (Data_Base));
    end Subscription;


    procedure Unsubscription (Mess : in out Message.Object) is


    begin
        Object_Manager.Unsubscribe
           (Data_Base, Object_Manager.Object_Id (Message.Get_Emet (Mess)),
            Object_Manager.Object_Id (Message.Get_Dest (Mess)), Mess);

        Task_Io.Put_Line ("after unsubscription " &
                          Object_Manager.Image (Data_Base));
    end Unsubscription;


    procedure Filtration (Mess : in out Message.Object) is
    begin
        [statement]
    end Filtration;


    procedure Unfiltration (Mess : in out Message.Object) is
    begin
        [statement]
    end Unfiltration;


    procedure Request (Mess : in out Message.Object) is separate;

    procedure Answer (Mess : in out Message.Object) is
        The_Object : Registrated_Object.Object;
        Method_N, Class : Parametre.Variable_String;
        A_Subscripter_Id : Object_Manager.Object_Id;
        Subscripters : Object_Manager.Objects_Id.S_List;
        Subscripters_Iter : Object_Manager.Objects_Id.S_Iterator;
        Containt : Liste_Parametre.List;
        Iter : Liste_Parametre.Iterator;  
        Result : Boolean;

    begin  
        Containt := Message.Get_Containt (Mess);
        Liste_Parametre.Init (Iter, Containt);
        Class := Liste_Parametre.Value (Iter);
        Liste_Parametre.Next (Iter);  
        Method_N := Liste_Parametre.Value (Iter);
        The_Object := Object_Manager.Get_Object_By_Id
                         (Data_Base, Message.Get_Dest (Mess));
        Subscripters :=
           Object_Manager.Get_All_Subscripter
              (Data_Base, Object_Manager.Object_Id (Message.Get_Emet (Mess)),
               Method_N);
        if not Object_Manager.Objects_Id.Is_Empty (Subscripters) then
            Task_Io.Put_Line ("there are subscriptors");
            Object_Manager.Objects_Id.Init
               (Iter => Subscripters_Iter, L => Subscripters);
            while not Object_Manager.Objects_Id.Done (Subscripters_Iter) loop
                Task_Io.Put_Line ("talk to an subter");
                A_Subscripter_Id := Object_Manager.Objects_Id.Value
                                       (Subscripters_Iter);
                Object_Manager.Talk_To_Object (Data_Base => Data_Base,
                                               Id => A_Subscripter_Id,
                                               Mess => Mess,
                                               Result => Result);
                if not Result then
                    Object_Manager.Set_To_Unknow
                       (Data_Base, Object_Manager.Object_Id
                                      (Message.Get_Emet (Mess)));
                end if;  
                Object_Manager.Objects_Id.Next (Subscripters_Iter);

            end loop;
        end if;  
        Object_Manager.Talk_To_Object
           (Data_Base => Data_Base,
            Id => Object_Manager.Object_Id (Message.Get_Dest (Mess)),
            Mess => Mess,
            Result => Result);
        if not Result then
            Object_Manager.Set_To_Unknow
               (Data_Base, Object_Manager.Object_Id (Message.Get_Dest (Mess)));
        end if;  
        Object_Manager.Work_Finished
           (Data_Base, Object_Manager.Object_Id (Message.Get_Emet (Mess)));
        Task_Io.Put_Line ("after answer " & Object_Manager.Image (Data_Base));
    end Answer;
    procedure Forward (Mess : in out Message.Object) is
    begin
        [statement]
    end Forward;
end Orb_Service;

E3 Meta Data

    nblk1=17
    nid=f
    hdr6=e
        [0x00] rec0=1b rec1=00 rec2=01 rec3=056
        [0x01] rec0=1d rec1=00 rec2=0b rec3=000
        [0x02] rec0=19 rec1=00 rec2=09 rec3=064
        [0x03] rec0=20 rec1=00 rec2=0c rec3=04c
        [0x04] rec0=0f rec1=00 rec2=0d rec3=04c
        [0x05] rec0=13 rec1=00 rec2=15 rec3=086
        [0x06] rec0=10 rec1=00 rec2=12 rec3=000
        [0x07] rec0=15 rec1=00 rec2=0f rec3=000
        [0x08] rec0=16 rec1=00 rec2=0f rec3=000
        [0x09] rec0=09 rec1=00 rec2=0d rec3=000
        [0x0a] rec0=18 rec1=00 rec2=0a rec3=016
        [0x0b] rec0=09 rec1=00 rec2=11 rec3=048
        [0x0c] rec0=12 rec1=00 rec2=12 rec3=058
        [0x0d] rec0=21 rec1=00 rec2=0f rec3=000
        [0x0e] rec0=21 rec1=00 rec2=0f rec3=000
        [0x0f] rec0=0e rec1=00 rec2=16 rec3=000
        [0x10] rec0=10 rec1=00 rec2=11 rec3=016
        [0x11] rec0=24 rec1=00 rec2=12 rec3=034
        [0x12] rec0=14 rec1=00 rec2=13 rec3=076
        [0x13] rec0=14 rec1=00 rec2=14 rec3=008
        [0x14] rec0=17 rec1=00 rec2=15 rec3=060
        [0x15] rec0=1d rec1=00 rec2=16 rec3=022
        [0x16] rec0=0a rec1=00 rec2=17 rec3=000
    tail 0x217627db287c4552a19ac 0x42a00088462060003
Free Block Chain:
  0xf: 0000  00 0a 02 92 80 24 62 6a 65 63 74 5f 49 64 20 28  ┆     $bject_Id (┆
  0xa: 0000  00 16 01 2a 80 05 2e 49 6e 69 74 05 00 3e 20 20  ┆   *  .Init  >  ┆
  0x16: 0000  00 10 00 16 80 13 20 20 20 20 20 20 20 20 20 20  ┆                ┆
  0x10: 0000  00 0e 03 fc 80 1e 62 6a 65 63 74 20 28 44 61 74  ┆      bject (Dat┆
  0xe: 0000  00 13 03 fc 80 0c 61 6e 74 65 64 20 6d 65 74 68  ┆      anted meth┆
  0x13: 0000  00 11 03 fc 80 06 63 74 29 20 69 73 06 00 28 20  ┆      ct) is  ( ┆
  0x11: 0000  00 14 01 73 80 0e 75 6c 74 20 3a 20 42 6f 6f 6c  ┆   s  ult : Bool┆
  0x14: 0000  00 07 03 fc 80 2c 61 67 65 72 2e 54 61 6c 6b 5f  ┆     ,ager.Talk_┆
  0x7: 0000  00 08 00 63 80 27 20 20 20 20 20 20 20 20 20 20  ┆   c '          ┆
  0x8: 0000  00 05 03 fc 80 32 20 20 20 20 20 20 20 48 6f 73  ┆     2       Hos┆
  0x5: 0000  00 02 00 3e 80 0c 73 20 74 65 78 74 5f 69 6f 22  ┆   >  s text_io"┆
  0x2: 0000  00 17 00 aa 80 43 20 20 20 20 20 20 20 20 20 20  ┆     C          ┆
  0x17: 0000  00 06 01 66 80 2b 20 20 20 20 20 20 20 20 20 20  ┆   f +          ┆
  0x6: 0000  00 04 01 67 80 28 52 65 67 69 73 74 72 61 74 69  ┆   g (Registrati┆
  0x4: 0000  00 03 03 fc 80 23 20 20 20 20 20 20 20 4f 62 6a  ┆     #       Obj┆
  0x3: 0000  00 00 03 fc 80 2d 74 72 61 74 65 64 5f 4f 62 6a  ┆     -trated_Obj┆