|
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