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

⟦bea51bf5d⟧ Ada Source

    Length: 17408 (0x4400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Pool, seg_0222f5

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 Object_Editor;
with String_Map_Generic;
with Set_Generic;
with String_Utilities;
package body Pool is

    Small_Prime  : constant Natural := 10007;
    Medium_Prime : constant Natural := 50021;
    Large_Prime  : constant Natural := 100003;

    function Full_Name (Object : Directory.Object) return String
        renames Directory.Naming.Full_Name;

    package Reader is new Set_Generic (Element => Object_Editor.Instance);

    type Object is
        record
            Handle  : Directory.Object;
            Readers : Reader.Set;
            Updater : Object_Editor.Instance;
        end record;

    type Object_Ptr is access Object;

    package String_Map is new String_Map_Generic (Size        => Small_Prime,
                                                  Range_Type  => Object_Ptr,
                                                  Ignore_Case => False);

    Map : String_Map.Map;

    function Nil (Object : Directory.Object) return Pool.Object_Ptr is
        Ptr : Object_Ptr;
    begin
        Ptr        := new Pool.Object;
        Ptr.Handle := Object;
        Reader.Initialize (S => Ptr.Readers);
        Ptr.Updater := Object_Editor.Nil;
        return Ptr;
    end Nil;

    task Manager is
        entry Control (Object : Directory.Object; Status : out Pool.Status);

        entry Uncontrol (Object : Directory.Object; Status : out Pool.Status);

        entry Abandon (Object :     Directory.Object;
                       Editor :     Object_Editor.Instance;
                       Status : out Pool.Status);

        entry Read (Object :     Directory.Object;
                    Editor :     Object_Editor.Instance;
                    Status : out Pool.Status);

        entry Update (Object :     Directory.Object;
                      Editor :     Object_Editor.Instance;
                      Status : out Pool.Status);

        entry Abandon_Update (Object :     Directory.Object;
                              Editor :     Object_Editor.Instance;
                              Status : out Pool.Status);

        entry Is_Controlled (Object : Directory.Object; Status : out Boolean);
    end Manager;

    task body Manager is separate;

    procedure Control (Object : Directory.Object; Status : out Pool.Status) is
    begin
        Manager.Control (Object => Object, Status => Status);
    end Control;

    procedure Uncontrol (Object : Directory.Object; Status : out Pool.Status) is
    begin
        Manager.Uncontrol (Object => Object, Status => Status);
    end Uncontrol;

    procedure Abandon (Object :     Directory.Object;
                       Editor :     Object_Editor.Instance;
                       Status : out Pool.Status) is
    begin
        Manager.Abandon (Object => Object, Editor => Editor, Status => Status);
    end Abandon;

    procedure Read (Object :     Directory.Object;
                    Editor :     Object_Editor.Instance;
                    Status : out Pool.Status) is
    begin
        Manager.Read (Object => Object, Editor => Editor, Status => Status);
    end Read;

    procedure Update (Object :     Directory.Object;
                      Editor :     Object_Editor.Instance;
                      Status : out Pool.Status) is
    begin
        Manager.Update (Object => Object, Editor => Editor, Status => Status);
    end Update;

    procedure Abandon_Update (Object :     Directory.Object;
                              Editor :     Object_Editor.Instance;
                              Status : out Pool.Status) is
    begin
        Manager.Abandon_Update
           (Object => Object, Editor => Editor, Status => Status);
    end Abandon_Update;

    function Is_Controlled (Object : Directory.Object) return Boolean is
        Status : Boolean;
    begin
        Manager.Is_Controlled (Object => Object, Status => Status);
        return Status;
    end Is_Controlled;


begin
    String_Map.Initialize (The_Map => Map);
end Pool;

E3 Meta Data

    nblk1=10
    nid=9
    hdr6=a
        [0x00] rec0=20 rec1=00 rec2=01 rec3=064
        [0x01] rec0=1b rec1=00 rec2=07 rec3=06c
        [0x02] rec0=17 rec1=00 rec2=04 rec3=00e
        [0x03] rec0=19 rec1=00 rec2=0b rec3=038
        [0x04] rec0=0b rec1=00 rec2=08 rec3=000
        [0x05] rec0=06 rec1=00 rec2=09 rec3=000
        [0x06] rec0=19 rec1=00 rec2=08 rec3=00a
        [0x07] rec0=1a rec1=00 rec2=04 rec3=04e
        [0x08] rec0=07 rec1=00 rec2=07 rec3=000
        [0x09] rec0=07 rec1=00 rec2=07 rec3=000
        [0x0a] rec0=06 rec1=00 rec2=06 rec3=000
        [0x0b] rec0=06 rec1=00 rec2=06 rec3=000
        [0x0c] rec0=06 rec1=00 rec2=06 rec3=000
        [0x0d] rec0=1e rec1=00 rec2=07 rec3=02c
        [0x0e] rec0=06 rec1=00 rec2=06 rec3=000
        [0x0f] rec0=00 rec1=00 rec2=00 rec3=000
    tail 0x2171df366839169f5128f 0x42a00088462062803
Free Block Chain:
  0x9: 0000  00 0c 00 4b 00 00 00 00 00 00 00 05 62 65 67 69  ┆   K        begi┆
  0xc: 0000  00 0a 00 7c 80 46 20 20 4d 61 6e 61 67 65 72 2e  ┆   | F  Manager.┆
  0xa: 0000  00 0d 03 fc 80 29 20 20 20 20 20 20 20 20 20 20  ┆     )          ┆
  0xd: 0000  00 05 03 fc 80 31 20 61 63 63 65 70 74 20 55 6e  ┆     1 accept Un┆
  0x5: 0000  00 0f 03 f8 80 22 20 20 20 20 20 20 20 20 20 20  ┆     "          ┆
  0xf: 0000  00 06 00 0c 80 01 3b 01 00 05 20 20 20 20 65 05  ┆      ;       e ┆
  0x6: 0000  00 02 00 5d 80 04 29 20 69 73 04 00 09 20 20 20  ┆   ]  ) is      ┆
  0x2: 0000  00 03 03 fc 80 07 65 6e 64 20 69 66 3b 07 00 00  ┆      end if;   ┆
  0x3: 0000  00 10 03 fc 80 1e 3a 3d 20 4f 62 6a 65 63 74 5f  ┆      := Object_┆
  0x10: 0000  00 0e 00 26 80 0d 6c 79 5f 44 65 66 69 6e 65 64  ┆   &  ly_Defined┆
  0xe: 0000  00 00 00 54 00 0d 20 20 20 20 65 78 63 65 70 74  ┆   T      except┆