|
|
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: 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 ┆