|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 8192 (0x2000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, seg_0222f6, separate Pool
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
separate (Pool)
task body Manager is
Ptr : Pool.Object_Ptr;
Success : Boolean;
begin
loop
select
accept Control (Object : Directory.Object;
Status : out Pool.Status) do
begin
String_Map.Define (The_Map => Map,
D => Full_Name (Object),
R => Nil (Object),
Trap_Multiples => True);
Status := Ok;
exception
when String_Map.Multiply_Defined =>
Status := Object_Already_In_The_Pool;
when others =>
raise;
end;
end Control;
or
accept Uncontrol (Object : Directory.Object;
Status : out Pool.Status) do
begin
String_Map.Find (The_Map => Map,
D => Full_Name (Object),
R => Ptr,
Success => Success);
if not Success then
Status := Object_Not_In_The_Pool;
return;
end if;
if not Reader.Is_Empty (Ptr.Readers) then
Status := Object_Has_Readers;
return;
end if;
if not Object_Editor.Same_Editor
(Ptr.Updater, Object_Editor.Nil) then
Status := Object_Has_Updater;
return;
end if;
String_Map.Undefine (The_Map => Map,
D => Full_Name (Object));
Status := Ok;
exception
when String_Map.Undefined =>
Status := Object_Not_In_The_Pool;
when others =>
raise;
end;
end Uncontrol;
or
accept Abandon (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status) do
String_Map.Find (The_Map => Map,
D => Full_Name (Object),
R => Ptr,
Success => Success);
if not Success then
Status := Object_Not_In_The_Pool;
return;
end if;
if Object_Editor.Same_Editor (Ptr.Updater, Editor) then
Ptr.Updater := Object_Editor.Nil;
end if;
Reader.Delete (S => Ptr.Readers, X => Editor);
Status := Ok;
end Abandon;
or
accept Read (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status) do
String_Map.Find (The_Map => Map,
D => Full_Name (Object),
R => Ptr,
Success => Success);
if not Success then
Status := Object_Not_In_The_Pool;
return;
end if;
Reader.Add (S => Ptr.Readers, X => Editor);
Status := Ok;
end Read;
or
accept Update (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status) do
String_Map.Find (The_Map => Map,
D => Full_Name (Object),
R => Ptr,
Success => Success);
if not Success then
Status := Object_Not_In_The_Pool;
return;
end if;
if Object_Editor.Is_Nil (Ptr.Updater) then
Ptr.Updater := Editor;
Status := Ok;
else
Status := Object_Has_Updater;
end if;
end Update;
or
accept Abandon_Update (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status) do
String_Map.Find (The_Map => Map,
D => Full_Name (Object),
R => Ptr,
Success => Success);
if not Success then
Status := Object_Not_In_The_Pool;
return;
end if;
if Object_Editor.Same_Editor (Ptr.Updater, Editor) then
Ptr.Updater := Object_Editor.Nil;
Status := Ok;
else
Status := Bad_Updater;
end if;
end Abandon_Update;
or
accept Is_Controlled (Object : Directory.Object;
Status : out Boolean) do
String_Map.Find (The_Map => Map,
D => Full_Name (Object),
R => Ptr,
Success => Status);
end Is_Controlled;
or
terminate;
end select;
end loop;
end Manager;
nblk1=7
nid=0
hdr6=e
[0x00] rec0=1b rec1=00 rec2=01 rec3=014
[0x01] rec0=18 rec1=00 rec2=06 rec3=02c
[0x02] rec0=1a rec1=00 rec2=07 rec3=006
[0x03] rec0=1a rec1=00 rec2=02 rec3=008
[0x04] rec0=17 rec1=00 rec2=03 rec3=03a
[0x05] rec0=1c rec1=00 rec2=04 rec3=010
[0x06] rec0=03 rec1=00 rec2=05 rec3=001
tail 0x2171df36a839169f66ac8 0x42a00088462062803