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

⟦693e5c742⟧ Ada Source

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

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 Text_Io;  
with Communication;
with Utils;

package body Message is

    Longueur_Entete : Positive := 6;

    procedure Get (Trame : V_String.Variable_String;
                   I : in out Positive;
                   Champs : in out V_String.Variable_String;
                   Car : Character);

    procedure Enregistrement (O : out Objet) is
    begin
        Construire (0, 0, 0, Registration, V_String.Value (""), O);
        Text_Io.Put_Line ("construction regist");
    end Enregistrement;

    procedure Ajout_Service (O : in out Objet;
                             Service : V_String.Variable_String) is
    begin
        Construire (0, O.Expediteur, O.Ordre, Publication, Service, O);
    end Ajout_Service;

    procedure Demande (O : in out Objet; Service : V_String.Variable_String) is
    begin
        Construire (0, O.Expediteur, O.Ordre, Request, Service, O);
    end Demande;

    procedure Construire (Dest : Integer;
                          Exp : Integer;  
                          Ordre : Integer;
                          Typ : Type_Message;
                          Donnee : V_String.Variable_String;
                          O : out Objet) is
    begin
        O.Destinataire := Dest;
        O.Expediteur := Exp;  
        O.Ordre := Ordre;
        O.Typ := Typ;
        O.Donnee := Donnee;
    end Construire;

    procedure Afficher (O : Objet) is
    begin
        Text_Io.Put_Line ("le destinataire est : " &
                          Integer'Image (O.Destinataire));
        Text_Io.Put_Line ("l'expediteur est : " & Integer'Image (O.Expediteur));
        Text_Io.Put_Line ("le numero du message est : " &
                          Integer'Image (O.Ordre));  
        Text_Io.Put_Line ("le type du message est : " &
                          Type_Message'Image (O.Typ));
        Text_Io.Put_Line ("la donnee du message est : " &
                          V_String.Image (O.Donnee));
    end Afficher;

    function Image (O : Objet) return Byte_Defs.Byte_String is
    begin
        return (Utils.String_To_Byte_String
                   (Integer'Image (O.Destinataire) & '%' &
                    Integer'Image (O.Expediteur) & '%' &
                    Integer'Image (O.Ordre) & '%' & Type_Message'Image (O.Typ) &
                    '%' & V_String.Image (O.Donnee) & '%'));
    end Image;

    procedure Get (Trame : V_String.Variable_String;
                   I : in out Positive;
                   Champs : in out V_String.Variable_String;
                   Car : Character) is
        A : Positive := 1;  
        Debut_Index : Positive := I;
    begin
        while V_String.Char_At (Trame, I) /= Car loop  
            V_String.Copy (Champs, V_String.Extract (Trame, Debut_Index, I));  
            I := I + 1;  
        end loop;  
        I := I + 1;
    end Get;

    procedure Value (Trame_In : Byte_Defs.Byte_String; O : out Objet) is
        I : Positive := Longueur_Entete + 1;
        Champs1, Champs2, Champs3, Champs4, Champs5 : V_String.Variable_String;
        Trame : V_String.Variable_String;
    begin  
        Trame := V_String.Value (Utils.Byte_String_To_String (Trame_In));
        Get (Trame, I, Champs1, '%');  
        O.Destinataire := Integer'Value (V_String.Image (Champs1));
        Get (Trame, I, Champs2, '%');  
        O.Expediteur := Integer'Value (V_String.Image (Champs2));
        Get (Trame, I, Champs3, '%');  
        O.Ordre := Integer'Value (V_String.Image (Champs3));
        Get (Trame, I, Champs4, '%');  
        O.Typ := Type_Message'Value (V_String.Image (Champs4));
        Get (Trame, I, Champs5, '%');  
        O.Donnee := Champs5;
    end Value;

    procedure Emission (O : Objet;
                        Connection_Emission : Transport.Connection_Id;
                        Connection_Reception : Transport.Connection_Id) is
    begin
        Communication.Emission
           (Image (O), Connection_Emission, Connection_Reception);
    end Emission;

    procedure Emission_Orb (O : Objet;
                            Connection : Transport.Connection_Id;
                            Socket : Transport_Defs.Socket_Id;
                            Host : Transport_Defs.Host_Id) is
        use Byte_Defs;
    begin
        Communication.Emission_Orb (Image (O), Connection, Socket, Host);
    end Emission_Orb;

    procedure Copy (Source : Objet; Target : in out Objet) is
    begin
        Target.Destinataire := Source.Destinataire;
        Target.Expediteur := Source.Expediteur;
        Target.Ordre := Source.Ordre;
        Target.Typ := Source.Typ;
        V_String.Copy (Target.Donnee, Source.Donnee);
    end Copy;

    procedure Reception (O : in out Objet;
                         Connection : Transport.Connection_Id) is  
        Trame : Byte_Defs.Byte_String (1 .. 256);
        O1 : Objet;
    begin
        Communication.Reception (Trame, Connection);
        Value (Trame, O1);
        Copy (O1, O);
    end Reception;



    procedure Reception_Orb (O : out Objet;
                             Connection : Transport.Connection_Id;
                             Socket : out Transport_Defs.Socket_Id;
                             Host : out Transport_Defs.Host_Id) is
        Trame : Byte_Defs.Byte_String (1 .. 256);
    begin
        Communication.Reception_Orb (Trame, Connection, Socket, Host);
        Value (Trame, O);
    end Reception_Orb;

    function Consulter_Destinataire (O : Objet) return Integer is
    begin
        return O.Destinataire;
    end Consulter_Destinataire;

    function Consulter_Expediteur (O : Objet) return Integer is
    begin
        return O.Expediteur;
    end Consulter_Expediteur;

    function Consulter_Ordre (O : Objet) return Integer is
    begin
        return O.Ordre;
    end Consulter_Ordre;

    function Consulter_Typ (O : Objet) return Type_Message is
    begin
        return O.Typ;
    end Consulter_Typ;

    function Consulter_Donnee (O : Objet) return V_String.Variable_String is
    begin
        return O.Donnee;
    end Consulter_Donnee;

    procedure Modifier_Destinataire (O : in out Objet; D : Integer) is
    begin
        O.Destinataire := D;
    end Modifier_Destinataire;

    procedure Modifier_Expediteur (O : in out Objet; E : Integer) is
    begin
        O.Expediteur := E;
    end Modifier_Expediteur;

    procedure Modifier_Ordre (O : in out Objet; R : Integer) is
    begin
        O.Ordre := R;
    end Modifier_Ordre;

    procedure Incrementer_Ordre (O : in out Objet) is
    begin
        O.Ordre := O.Ordre + 1;
    end Incrementer_Ordre;

    procedure Modifier_Typ (O : in out Objet; T : Type_Message) is
    begin
        O.Typ := T;
    end Modifier_Typ;

    procedure Modifier_Donnee (O : in out Objet;
                               D : V_String.Variable_String) is
    begin
        O.Donnee := D;
    end Modifier_Donnee;


end Message;

E3 Meta Data

    nblk1=a
    nid=6
    hdr6=10
        [0x00] rec0=21 rec1=00 rec2=01 rec3=010
        [0x01] rec0=17 rec1=00 rec2=09 rec3=064
        [0x02] rec0=1a rec1=00 rec2=0a rec3=084
        [0x03] rec0=16 rec1=00 rec2=07 rec3=024
        [0x04] rec0=13 rec1=00 rec2=02 rec3=02c
        [0x05] rec0=1e rec1=00 rec2=03 rec3=038
        [0x06] rec0=24 rec1=00 rec2=04 rec3=012
        [0x07] rec0=11 rec1=00 rec2=08 rec3=000
        [0x08] rec0=11 rec1=00 rec2=08 rec3=000
        [0x09] rec0=30 rec1=00 rec2=20 rec3=000
    tail 0x21762ea3887c492c8dee8 0x42a00088462060003
Free Block Chain:
  0x6: 0000  00 05 02 1a 80 08 6d 65 5f 49 6e 29 29 3b 08 00  ┆      me_In));  ┆
  0x5: 0000  00 00 00 84 80 11 6e 67 5f 54 6f 5f 42 79 74 65  ┆      ng_To_Byte┆