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

⟦ee0a5685e⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Message, seg_057277

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with Bounded_String;
with Text_Io;
package body Message is

    type Conversion is array (Command_Type'First .. Command_Type'Last) of
                          Orb_Tools.Command_String;

    To_String : constant Conversion :=
       (Registration => Command_Type'Image (Registration)
                           (1 .. Orb_Tools.Length_Command_String),
        Unregistration => Command_Type'Image (Unregistration)
                             (1 .. Orb_Tools.Length_Command_String),
        Queries => Command_Type'Image (Queries)
                      (1 .. Orb_Tools.Length_Command_String),
        Request => Command_Type'Image (Request)
                      (1 .. Orb_Tools.Length_Command_String),
        Notification => Command_Type'Image (Notification)
                           (1 .. Orb_Tools.Length_Command_String),
        Forward => Command_Type'Image (Forward)
                      (1 .. Orb_Tools.Length_Command_String),
        Publication => Command_Type'Image (Publication)
                          (1 .. Orb_Tools.Length_Command_String),
        Unpublication => Command_Type'Image (Unpublication)
                            (1 .. Orb_Tools.Length_Command_String),
        Subscription => Command_Type'Image (Subscription)
                           (1 .. Orb_Tools.Length_Command_String),
        Unsubscription => Command_Type'Image (Unsubscription)
                             (1 .. Orb_Tools.Length_Command_String),
        Filtration => Command_Type'Image (Filtration)
                         (1 .. Orb_Tools.Length_Command_String),
        Unfiltration => Command_Type'Image (Unfiltration)
                           (1 .. Orb_Tools.Length_Command_String),
        Identify => Command_Type'Image (Identify)
                       (1 .. Orb_Tools.Length_Command_String),
        Ifailed => Command_Type'Image (Ifailed)
                      (1 .. Orb_Tools.Length_Command_String),
        Rfailed => Command_Type'Image (Rfailed)
                      (1 .. Orb_Tools.Length_Command_String));

    procedure Fill (Data : in out Orb_Tools.Data_String; Mess : in Tmessage) is

    begin  
        Orb_Tools.Copy (Identification.Tclient_Id'Image (Mess.Origin), Data);
        Orb_Tools.Append (":", Data);
        Orb_Tools.Append (To_String (Mess.Command), Data);
        Orb_Tools.Append (":", Data);
        Orb_Tools.Append (Mess.Content, Data);
    end Fill;

    procedure Unfill (Data : in Orb_Tools.Data_String;
                      Mess : in out Tmessage) is
        Intermediaire : Orb_Tools.Command_String;
        I, J : Natural := 1;
        Char : String (1 .. 1);
    begin
        loop
            Char := Orb_Tools.Extract
                       (Source => Data, Start_Pos => J, End_Pos => J);
            exit when Char = ":";
            J := J + 1;
        end loop;

        Mess.Origin := Identification.Tclient_Id'Value
                          (Orb_Tools.Extract (Data, I, J - 1));
        I := J + 1;
        J := Orb_Tools.Length_Command_String + I - 1;

        Intermediaire := Orb_Tools.Extract
                            (Source => Data, Start_Pos => I, End_Pos => J);

        for Index in Command_Type'First .. Command_Type'Last loop
            if Intermediaire = To_String (Index) then               Mess.Command := Index;
            end if;
        end loop;

        I := J + 2;
        J := Bounded_String.Length (Data);
        Orb_Tools.Copy (Target => Mess.Content,
                        Source => Orb_Tools.Extract (Source => Data,
                                                     Start_Pos => I,
                                                     End_Pos => J));  
    end Unfill;

    procedure Fill_Command (Mess : out Tmessage; Comm : in Command_Type) is
    begin
        Mess.Command := Comm;
    end Fill_Command;

    procedure Unfill_Command (Mess : in Tmessage; Comm : out Command_Type) is
    begin
        Comm := Mess.Command;
    end Unfill_Command;

    procedure Fill_Origin (Mess : out Tmessage;
                           Orig : in Identification.Tclient_Id) is
    begin
        Mess.Origin := Orig;
    end Fill_Origin;

    procedure Unfill_Origin (Mess : in Tmessage;
                             Orig : out Identification.Tclient_Id) is
    begin
        Orig := Mess.Origin;
    end Unfill_Origin;

    procedure Fill_Content (Mess : out Tmessage;
                            Cont : in Orb_Tools.Content_String) is
    begin
        Mess.Content := Cont;
    end Fill_Content;

    procedure Unfill_Content (Mess : in Tmessage;
                              Cont : out Orb_Tools.Content_String) is
    begin
        Cont := Mess.Content;
    end Unfill_Content;

end Message;

E3 Meta Data

    nblk1=7
    nid=3
    hdr6=c
        [0x00] rec0=16 rec1=00 rec2=01 rec3=04a
        [0x01] rec0=10 rec1=00 rec2=07 rec3=05e
        [0x02] rec0=08 rec1=00 rec2=06 rec3=072
        [0x03] rec0=1c rec1=00 rec2=04 rec3=002
        [0x04] rec0=1d rec1=00 rec2=02 rec3=04c
        [0x05] rec0=12 rec1=00 rec2=05 rec3=000
        [0x06] rec0=a3 rec1=5c rec2=00 rec3=03d
    tail 0x2154df32887c6740de3dd 0x42a00088462060003
Free Block Chain:
  0x3: 0000  00 00 00 12 00 0c 65 6e 64 20 4d 65 73 73 61 67  ┆      end Messag┆