|
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 - download
Length: 26624 (0x6800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Record_Tables, seg_055c9d
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Text_Io; with Bounded_String; with List_Generic; with String_Map_Generic; package body Record_Tables is type Record_Object is record Subscription : Boolean; Subscript_Identifier : My_Message.My_String; Filtration : Boolean; Filter_Identifier : My_Message.My_String; end record; package My_List is new List_Generic (Element => My_Message.My_String); type List_Object is record List_Of_Servers : My_List.List; List_Of_Filters : My_List.List; List_Of_Subscripts : My_List.List; end record; package My_Hash_List is new String_Map_Generic (Size => 1000, Range_Type => List_Object); Recorded_Services_Map : My_Hash_List.Map; package My_Hash_Record is new String_Map_Generic (Size => 1000, Range_Type => Record_Object); Identifiers_Map : My_Hash_Record.Map; -------------------------------------------------------------------------- procedure Initialize_Data_Structures is begin My_Hash_List.Initialize (Recorded_Services_Map); My_Hash_Record.Initialize (Identifiers_Map); end Initialize_Data_Structures; function Client_Is_Registrate (Message : My_Message.Object) return Boolean is Success : Boolean; Range_Type : Record_Object; begin My_Hash_Record.Find (The_Map => Identifiers_Map, D => Bounded_String.Image (My_Message.Get_Local_Identifier (Message)), R => Range_Type, Success => Success); return Success; end Client_Is_Registrate; procedure Fill_In (Message : My_Message.Object) is Range_Type : Record_Object; begin My_Hash_Record.Define (The_Map => Identifiers_Map, D => Bounded_String.Image (My_Message.Get_Local_Identifier (Message)), R => Range_Type); end Fill_In; procedure Delete (Message : My_Message.Object) is begin My_Hash_Record.Undefine (The_Map => Identifiers_Map, D => Bounded_String.Image (My_Message.Get_Local_Identifier (Message))); end Delete; function Request_Exists (Message : My_Message.Object) return Boolean is Success : Boolean; The_List_Object : List_Object; begin My_Hash_List.Find (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object, Success => Success); return Success; end Request_Exists; function Extract_Rem_Id_For_Request (Message : My_Message.Object) return My_Message.My_String is The_List_Object : List_Object; My_Iter : My_List.Iterator; Success : Boolean; Range_Type : Record_Object; begin My_Hash_List.Find (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object, Success => Success); My_List.Init (My_Iter, The_List_Object.List_Of_Servers); while not My_List.Done (My_Iter) loop My_Hash_Record.Find (The_Map => Identifiers_Map, D => Bounded_String.Image (My_Message.Get_Local_Identifier (Message)), R => Range_Type, Success => Success); if (Success = True) then return My_List.Value (My_Iter); else My_List.Next (My_Iter); end if; end loop; end Extract_Rem_Id_For_Request; function Extract_Rem_Id_For_Reply (Message : My_Message.Object) return My_Message.My_String is begin return My_Message.Get_Local_Identifier (Message); end Extract_Rem_Id_For_Reply; procedure Send_To_All (Message : My_Message.Object) is My_Iter : My_Hash_Record.Iterator; Rem_Id : My_Message.My_String; New_Message : My_Message.Object := My_Message.Initialize (Op => My_Message.Notification, Cont => My_Message.Get_Content (Message), L_I => My_Message.Get_Local_Identifier (Message), Req_I => My_Message.Get_Request_Identifier (Message)); begin My_Hash_Record.Init (My_Iter, Identifiers_Map); while not (My_Hash_Record.Done (My_Iter)) loop Bounded_String.Copy (Rem_Id, My_Hash_Record.Value (My_Iter)); My_Message.Send (New_Message, Rem_Id); My_Hash_Record.Next (My_Iter); end loop; end Send_To_All; procedure Record_Of_Publication (Message : My_Message.Object) is The_List_Object : List_Object; Success : Boolean; begin My_Hash_List.Find (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object, Success => Success); The_List_Object.List_Of_Servers := My_List.Make (My_Message.Get_Local_Identifier (Message), The_List_Object.List_Of_Servers); My_Hash_List.Define (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object); end Record_Of_Publication; procedure Record_Of_Publication_Filter (Message : My_Message.Object) is The_List_Object : List_Object; Success : Boolean; begin My_Hash_List.Find (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object, Success => Success); The_List_Object.List_Of_Filters := My_List.Make (My_Message.Get_Local_Identifier (Message), The_List_Object.List_Of_Filters); My_Hash_List.Define (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object); end Record_Of_Publication_Filter; procedure Unrecord_Of_Publication (Message : My_Message.Object) is The_List_Object : List_Object; New_List : My_List.List; My_Iter : My_List.Iterator; begin The_List_Object := My_Hash_List.Eval (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message))); My_List.Init (My_Iter, The_List_Object.List_Of_Servers); while not (My_List.Done (My_Iter)) loop if (Bounded_String.Image (My_List.Value (My_Iter)) = Bounded_String.Image (My_Message.Get_Local_Identifier (Message))) then null; else New_List := My_List.Make (My_List.Value (My_Iter), New_List); end if; My_List.Next (My_Iter); end loop; The_List_Object.List_Of_Servers := New_List; My_List.Free (New_List); if My_List.Is_Empty (The_List_Object.List_Of_Servers) then My_Hash_List.Undefine (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message))); else My_Hash_List.Define (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object); end if; end Unrecord_Of_Publication; procedure Unrecord_Of_Publication_Filter (Message : My_Message.Object) is The_List_Object : List_Object; New_List : My_List.List; My_Iter : My_List.Iterator; begin The_List_Object := My_Hash_List.Eval (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message))); My_List.Init (My_Iter, The_List_Object.List_Of_Filters); while not (My_List.Done (My_Iter)) loop if (Bounded_String.Image (My_List.Value (My_Iter)) = Bounded_String.Image (My_Message.Get_Local_Identifier (Message))) then null; else New_List := My_List.Make (My_List.Value (My_Iter), New_List); end if; My_List.Next (My_Iter); end loop; The_List_Object.List_Of_Filters := New_List; My_List.Free (New_List); if My_List.Is_Empty (The_List_Object.List_Of_Filters) then My_Hash_List.Undefine (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message))); else My_Hash_List.Define (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object); end if; end Unrecord_Of_Publication_Filter; procedure Set_Subscription (Message : My_Message.Object) is The_List_Object : List_Object; Success : Boolean; begin My_Hash_List.Find (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object, Success => Success); The_List_Object.List_Of_Subscripts := My_List.Make (My_Message.Get_Local_Identifier (Message), The_List_Object.List_Of_Subscripts); My_Hash_List.Define (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object); end Set_Subscription; procedure Reset_Subscription (Message : My_Message.Object) is The_List_Object : List_Object; New_List : My_List.List; My_Iter : My_List.Iterator; begin The_List_Object := My_Hash_List.Eval (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message))); My_List.Init (My_Iter, The_List_Object.List_Of_Subscripts); while not (My_List.Done (My_Iter)) loop if (Bounded_String.Image (My_List.Value (My_Iter)) = Bounded_String.Image (My_Message.Get_Local_Identifier (Message))) then null; else New_List := My_List.Make (My_List.Value (My_Iter), New_List); end if; My_List.Next (My_Iter); end loop; The_List_Object.List_Of_Subscripts := New_List; My_List.Free (New_List); if My_List.Is_Empty (The_List_Object.List_Of_Subscripts) then My_Hash_List.Undefine (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message))); else My_Hash_List.Define (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object); end if; end Reset_Subscription; procedure Set_Filter (Message : My_Message.Object) is The_List_Object : List_Object; Success : Boolean; begin My_Hash_List.Find (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object, Success => Success); The_List_Object.List_Of_Filters := My_List.Make (My_Message.Get_Local_Identifier (Message), The_List_Object.List_Of_Filters); My_Hash_List.Define (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object); end Set_Filter; procedure Reset_Filter (Message : My_Message.Object) is The_List_Object : List_Object; New_List : My_List.List; My_Iter : My_List.Iterator; begin The_List_Object := My_Hash_List.Eval (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message))); My_List.Init (My_Iter, The_List_Object.List_Of_Filters); while not (My_List.Done (My_Iter)) loop if (Bounded_String.Image (My_List.Value (My_Iter)) = Bounded_String.Image (My_Message.Get_Local_Identifier (Message))) then null; else New_List := My_List.Make (My_List.Value (My_Iter), New_List); end if; My_List.Next (My_Iter); end loop; The_List_Object.List_Of_Filters := New_List; My_List.Free (New_List); if My_List.Is_Empty (The_List_Object.List_Of_Filters) then My_Hash_List.Undefine (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message))); else My_Hash_List.Define (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Content (Message)), R => The_List_Object); end if; end Reset_Filter; procedure Show_Content_And_Objects_Of_Orb (Message : My_Message.Object) is My_Iter_1 : My_Hash_Record.Iterator; My_Iter_2 : My_Hash_List.Iterator; begin Text_Io.Put_Line ("Here is a list of the ORB's registrate objects : "); My_Hash_Record.Init (My_Iter_1, Identifiers_Map); while not (My_Hash_Record.Done (My_Iter_1)) loop Text_Io.Put_Line (My_Hash_Record.Value (My_Iter_1)); My_Hash_Record.Next (My_Iter_1); end loop; Text_Io.Put_Line ("Here is a list of the ORB's possible requests : "); My_Hash_List.Init (My_Iter_2, Recorded_Services_Map); while not (My_Hash_List.Done (My_Iter_2)) loop Text_Io.Put_Line (My_Hash_List.Value (My_Iter_2)); My_Hash_List.Next (My_Iter_2); end loop; end Show_Content_And_Objects_Of_Orb; procedure Reply_The_Content (Message : My_Message.Object) is My_Iter : My_Hash_List.Iterator; List_Of_Content : My_Message.My_String; New_Message : My_Message.Object; Rem_Id : My_Message.My_String; begin My_Hash_List.Init (My_Iter, Recorded_Services_Map); while not (My_Hash_List.Done (My_Iter)) loop Bounded_String.Append (List_Of_Content, My_Hash_List.Value (My_Iter) & ","); My_Hash_List.Next (My_Iter); end loop; New_Message := My_Message.Initialize (Op => My_Message.Forward_Reply, Cont => List_Of_Content, L_I => My_Message.Get_Local_Identifier (Message), Req_I => My_Message.Get_Request_Identifier (Message)); Bounded_String.Copy (Rem_Id, My_Message.Get_Local_Identifier (Message)); My_Message.Send (New_Message, Rem_Id); end Reply_The_Content; procedure Reply (Message : My_Message.Object) is The_List_Object : List_Object; My_Iter : My_List.Iterator; Rem_Id : My_Message.My_String; Success : Boolean; New_Message : My_Message.Object; begin My_Hash_List.Find (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Remote_Identifier (Message)), R => The_List_Object, Success => Success); if not (My_List.Is_Empty (The_List_Object.List_Of_Filters)) then New_Message := My_Message.Initialize (Op => My_Message.Forward_Filtration, Cont => My_Message.Get_Content (Message), L_I => My_Message.Get_Local_Identifier (Message), Req_I => My_Message.Get_Request_Identifier (Message)); My_List.Init (My_Iter, The_List_Object.List_Of_Filters); Bounded_String.Copy (Rem_Id, My_List.Value (My_Iter)); My_Message.Send (New_Message, Rem_Id); else New_Message := My_Message.Initialize (Op => My_Message.Reply_Subscription, Cont => My_Message.Get_Content (Message), L_I => My_Message.Get_Local_Identifier (Message), Req_I => My_Message.Get_Request_Identifier (Message)); My_List.Init (My_Iter, The_List_Object.List_Of_Subscripts); while not My_List.Done (My_Iter) loop Bounded_String.Copy (Rem_Id, My_List.Value (My_Iter)); My_Message.Send (New_Message, Rem_Id); My_List.Next (My_Iter); end loop; New_Message := My_Message.Initialize (Op => My_Message.Forward_Reply, Cont => My_Message.Get_Content (Message), L_I => My_Message.Get_Local_Identifier (Message), Req_I => My_Message.Get_Request_Identifier (Message)); My_Message.Send (New_Message, My_Message.Get_Local_Identifier (Message)); end if; end Reply; procedure Reply_Filtration (Message : My_Message.Object) is The_List_Object : List_Object; My_Iter : My_List.Iterator; Rem_Id : My_Message.My_String; Success : Boolean; New_Message : My_Message.Object := My_Message.Initialize (Op => My_Message.Forward_Reply, Cont => My_Message.Get_Content (Message), L_I => My_Message.Get_Local_Identifier (Message), Req_I => My_Message.Get_Request_Identifier (Message), R_I => My_Message.Get_Remote_Identifier (Message)); begin My_Hash_List.Find (The_Map => Recorded_Services_Map, D => Bounded_String.Image (My_Message.Get_Remote_Identifier (Message)), R => The_List_Object, Success => Success); My_List.Init (My_Iter, The_List_Object.List_Of_Subscripts); while not My_List.Done (My_Iter) loop Bounded_String.Copy (Rem_Id, My_List.Value (My_Iter)); My_Message.Send (New_Message, Rem_Id); My_List.Next (My_Iter); end loop; My_Message.Send (New_Message, My_Message.Get_Local_Identifier (Message)); end Reply_Filtration; end Record_Tables;
nblk1=19 nid=19 hdr6=30 [0x00] rec0=22 rec1=00 rec2=01 rec3=000 [0x01] rec0=1f rec1=00 rec2=11 rec3=004 [0x02] rec0=1c rec1=00 rec2=05 rec3=086 [0x03] rec0=18 rec1=00 rec2=0f rec3=024 [0x04] rec0=19 rec1=00 rec2=07 rec3=048 [0x05] rec0=17 rec1=00 rec2=04 rec3=000 [0x06] rec0=17 rec1=00 rec2=0b rec3=01a [0x07] rec0=00 rec1=00 rec2=17 rec3=022 [0x08] rec0=17 rec1=00 rec2=06 rec3=00e [0x09] rec0=15 rec1=00 rec2=12 rec3=014 [0x0a] rec0=15 rec1=00 rec2=16 rec3=006 [0x0b] rec0=0d rec1=00 rec2=18 rec3=058 [0x0c] rec0=15 rec1=00 rec2=0d rec3=05c [0x0d] rec0=15 rec1=00 rec2=03 rec3=03c [0x0e] rec0=15 rec1=00 rec2=10 rec3=05e [0x0f] rec0=18 rec1=00 rec2=09 rec3=05c [0x10] rec0=16 rec1=00 rec2=0c rec3=034 [0x11] rec0=17 rec1=00 rec2=0a rec3=04e [0x12] rec0=17 rec1=00 rec2=0e rec3=006 [0x13] rec0=13 rec1=00 rec2=14 rec3=044 [0x14] rec0=17 rec1=00 rec2=02 rec3=022 [0x15] rec0=06 rec1=00 rec2=15 rec3=020 [0x16] rec0=12 rec1=00 rec2=13 rec3=084 [0x17] rec0=06 rec1=00 rec2=08 rec3=000 [0x18] rec0=06 rec1=00 rec2=08 rec3=000 tail 0x2154d832c87c060c38015 0x42a00088462060003 Free Block Chain: 0x19: 0000 00 00 00 08 80 05 4d 65 73 73 61 05 00 00 00 00 ┆ Messa ┆