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

⟦e532af8bf⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Sub_Registration, seg_05727a

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 Orb_Tools;  
with Bounded_String;

package body Sub_Registration is

    function Is_Registration (Mess : Message.Tmessage) return Boolean is
        Comm : Message.Command_Type;
    begin
        Message.Unfill_Command (Mess, Comm);
        if Message.Command_Type'Image (Comm) =
           Message.Command_Type'Image (Message.Registration) then
            return True;
        else
            return False;
        end if;
    end Is_Registration;

    function Is_Unregistration (Mess : Message.Tmessage) return Boolean is
        Comm : Message.Command_Type;
    begin
        Message.Unfill_Command (Mess, Comm);
        if Message.Command_Type'Image (Comm) =
           Message.Command_Type'Image (Message.Unregistration) then
            return True;
        else
            return False;
        end if;  
    end Is_Unregistration;

    procedure Extract_Host_And_Name_And_Sock
                 (From : Orb_Tools.Content_String;
                  Host : in out Orb_Tools.Host_String;
                  Name : in out Orb_Tools.Content_String;
                  Sock : in out Orb_Tools.Socket_String) is
        I : Natural := 1;  
        J : Natural := 1;
    begin
        loop
            exit when Orb_Tools.Extract (From, J, J) = ":";
            J := J + 1;  
        end loop;
        Orb_Tools.Copy (Source => Orb_Tools.Extract (From, I, J - 1),
                        Target => Sock);
        J := J + 1;
        I := J;
        loop
            exit when Orb_Tools.Extract (From, J, J) = ":";
            J := J + 1;  
        end loop;
        Orb_Tools.Copy (Source => Orb_Tools.Extract (From, I, J - 1),
                        Target => Host);
        I := J + 1;
        J := Bounded_String.Length (From);
        Orb_Tools.Copy (Target => Name,
                        Source => Orb_Tools.Extract (Source => From,
                                                     Start_Pos => I,
                                                     End_Pos => J));

    end Extract_Host_And_Name_And_Sock;

    procedure Alloc_Ident (Mess : in out Message.Tmessage;
                           Ident : in out Identification.Tclient_Id) is
        Id : Identification.Tclient_Id;  
        Description : Identification.Tdescription;
        Content : Orb_Tools.Content_String;
    begin  
        Message.Unfill_Content (Mess, Content);
        Extract_Host_And_Name_And_Sock (Content, Description.Host,
                                        Description.Name, Description.Sock);
        Identification.Enter_New_Object (Id, Description);  
        Ident := Id;
    end Alloc_Ident;

    procedure Desalloc_Ident (Ident : in Identification.Tclient_Id) is
    begin
        Identification.Delete_Object (Ident);
    end Desalloc_Ident;

end Sub_Registration;

E3 Meta Data

    nblk1=4
    nid=3
    hdr6=6
        [0x00] rec0=21 rec1=00 rec2=01 rec3=00c
        [0x01] rec0=19 rec1=00 rec2=02 rec3=006
        [0x02] rec0=18 rec1=00 rec2=04 rec3=000
        [0x03] rec0=14 rec1=00 rec2=04 rec3=000
    tail 0x2154dec9a87c650599367 0x42a00088462060003
Free Block Chain:
  0x3: 0000  00 00 03 47 00 27 20 20 20 20 65 6e 64 20 45 78  ┆   G '    end Ex┆