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

⟦f0e48f75c⟧ Ada Source

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

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 Trame_Registration;
with Trame_Publication;
with Trame_Request;
with Message;
with Communication;
with Text_Io;


package body Client_Orb is
    use Communication;
    use Message;

    S : Communication.Status_Code;

    function Register (Class : Var_String.V_String)
                      return Agent_Nb.T_Agent_Nb is
        S : Communication.Status_Code;
        V : Var_String.V_String;
        M : Message.Object;

    begin
        M := Message.Create
                (Class => Message.Registration,
                 Source => Agent_Nb.Null_Agent_Nb,
                 Destination => Agent_Nb.Null_Agent_Nb,
                 Donnees => Trame_Registration.Image
                               (Trame => Trame_Registration.Create
                                            (Class => Class,
                                             Chanel => Communication.
                                                          Get_Chanel)));

        Communication.Send
           (Message => Message.Image (Message => M),
            Remote_Host =>
               Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
            Remote_Socket =>
               Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
            Status => S);

        Text_Io.Put_Line
           ("registration " &
            Var_String.Image (Com_Chanel.Image (Communication.Get_Chanel)) &
            " en cours ");

        loop
            Communication.Receive (Message => V, Status => S);
            Text_Io.Put_Line ("resultat:" & Var_String.Image (V) & " status :" &
                              Communication.Status_Code'Image (S));
            exit when S = Communication.Ok;

            if S = Communication.No_Message then
                delay (10.0);
            end if;

        end loop;
        M := Message.Value (Message => V);
        return Message.Get_Source (M);
    end Register;


    procedure Unregister (Agent : Agent_Nb.T_Agent_Nb) is
        M : Message.Object;
    begin
        M := Message.Create (Class => Message.Unregistration,
                             Source => Agent,
                             Destination => Agent_Nb.Null_Agent_Nb,
                             Donnees => Var_String.Null_V_String);

        Communication.Send
           (Message => Message.Image (Message => M),
            Remote_Host =>
               Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
            Remote_Socket =>
               Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
            Status => S);

    end Unregister;

    procedure Publication (Agent : Agent_Nb.T_Agent_Nb;
                           Methode : Var_String.V_String;
                           Parameter : Var_String.V_String) is

        M : Message.Object;
    begin
        M := Message.Create
                (Class => Message.Publication,
                 Source => Agent,
                 Destination => Agent_Nb.Null_Agent_Nb,
                 Donnees => Trame_Publication.Image
                               (Trame => Trame_Publication.Create
                                            (Methode => Methode,
                                             Parameter => Parameter)));

        Communication.Send
           (Message => Message.Image (Message => M),
            Remote_Host =>
               Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
            Remote_Socket =>
               Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
            Status => S);

    end Publication;


    procedure Unpublication (Agent : Agent_Nb.T_Agent_Nb;
                             Methode : Var_String.V_String) is

        M : Message.Object;
    begin
        M := Message.Create
                (Class => Message.Unpublication,
                 Source => Agent,
                 Destination => Agent_Nb.Null_Agent_Nb,
                 Donnees => Trame_Publication.Image
                               (Trame => Trame_Publication.Create
                                            (Methode => Methode,
                                             Parameter => Var_String.
                                                             Null_V_String)));

        Communication.Send
           (Message => Message.Image (Message => M),
            Remote_Host =>
               Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
            Remote_Socket =>
               Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
            Status => S);
    end Unpublication;


    procedure Request (Agent : Agent_Nb.T_Agent_Nb;
                       Methode : Var_String.V_String;
                       Parameter : in out Var_String.V_String;
                       Ok : out Boolean) is

        S : Communication.Status_Code;
        V : Var_String.V_String;
        M : Message.Object;
        Trame : Trame_Request.Object;

    begin
        M := Message.Create
                (Class => Message.Request,
                 Source => Agent,
                 Destination => Agent_Nb.Null_Agent_Nb,
                 Donnees => Trame_Request.Image
                               (Trame => Trame_Request.Create
                                            (Methode => Methode,
                                             Parameter => Parameter)));

        Communication.Send
           (Message => Message.Image (Message => M),
            Remote_Host =>
               Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
            Remote_Socket =>
               Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
            Status => S);
        loop
            loop
                Communication.Receive (Message => V, Status => S);
                Text_Io.Put_Line
                   ("resultat:" & Var_String.Image (V) & " status :" &
                    Communication.Status_Code'Image (S));
                exit when S = Communication.Ok;

                if S = Communication.No_Message then
                    delay (10.0);
                end if;

            end loop;
            M := Message.Value (Message => V);
            exit when Message.Get_Class (M) = Message.Replay;
            exit when Message.Get_Class (M) = Message.Error;
        end loop;  
        Ok := False;

        if Message.Get_Class (M) = Message.Replay then
            Trame := Trame_Request.Value (S => Message.Get_Donnees (M));
            Parameter := Trame_Request.Get_Parameter (Trame);
            Ok := True;
        end if;

    end Request;

    procedure Replay (Agent_Source : Agent_Nb.T_Agent_Nb;
                      Agent_Destination : Agent_Nb.T_Agent_Nb;
                      Methode : Var_String.V_String;
                      Parameter : in Var_String.V_String) is

        S : Communication.Status_Code;
        M : Message.Object;

    begin
        M := Message.Create
                (Class => Message.Replay,
                 Source => Agent_Source,
                 Destination => Agent_Destination,
                 Donnees => Trame_Request.Image
                               (Trame => Trame_Request.Create
                                            (Methode => Methode,
                                             Parameter => Parameter)));

        Communication.Send
           (Message => Message.Image (Message => M),
            Remote_Host =>
               Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
            Remote_Socket =>
               Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
            Status => S);
    end Replay;

begin
    Communication.Init (Chanel => Com_Chanel.Null_Object, Status => S);
    Text_Io.Put_Line ("Initialisation du client :" &
                      Communication.Status_Code'Image (S));

end Client_Orb;

E3 Meta Data

    nblk1=a
    nid=a
    hdr6=12
        [0x00] rec0=21 rec1=00 rec2=01 rec3=00c
        [0x01] rec0=1d rec1=00 rec2=08 rec3=00c
        [0x02] rec0=1a rec1=00 rec2=07 rec3=014
        [0x03] rec0=1a rec1=00 rec2=05 rec3=034
        [0x04] rec0=17 rec1=00 rec2=03 rec3=02c
        [0x05] rec0=19 rec1=00 rec2=06 rec3=040
        [0x06] rec0=1a rec1=00 rec2=09 rec3=064
        [0x07] rec0=1b rec1=00 rec2=02 rec3=00e
        [0x08] rec0=03 rec1=00 rec2=04 rec3=001
        [0x09] rec0=c9 rec1=0f rec2=ac rec3=56e
    tail 0x21765993887e2a895e791 0x42a00088462060003
Free Block Chain:
  0xa: 0000  00 00 03 fc 80 14 20 20 43 6f 6d 6d 75 6e 69 63  ┆        Communic┆