|
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: 6144 (0x1800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Request, seg_04b23d, seg_04b2bb, separate Broker_Work
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Max; separate (Broker_Work) procedure Request (M : Message_New.Object; Save : in out Memory.File) is Iter1 : Database.Iterator := Database.Publishers (Message_New.Get_Method (M)); Iter2 : Database.Iterator := Database.Subscribers (Message_New.Get_Method (M)); S : Message_Transport.Status_Code; Msg : Message_New.Object := M; use Message_Transport; begin Log (""); Log ("+++ Received request for " & Method.Image (Message_New.Get_Method (M))); Count := Count + 1; Memory.Add (Save, Count, Message_New.Get_Sender (M)); Message_New.Set_Request (Msg, Count); Publishers: while not Database.Is_Done (Iter1) loop Log ("+++ Found potential server =>" & Integer'Image (Database.Value (Iter1))); Log ("--- Forwarding request"); Message_Transport.Put (Message => Standard.Message_New.Image (Msg), Remote_Host => Identifier.Get_Host (Identifier.Value (Database.Value (Iter1))), Remote_Socket => Identifier.Get_Socket (Identifier.Value (Database.Value (Iter1))), Number_Of_Retry => 10, Retry_Delay => 0.1, Status => S); if S = Message_Transport.Ok then Log ("+++ Forward successful"); exit; --[we forwarded successfuly and continue] else Put_Line ("++* Forward failed for publisher =>" & Integer'Image (Database.Value (Iter1))); Put_Line ("--- Making it stale"); Stale (Behavior => Database.Value (Iter1)); Put_Line ("--- Trying next publisher"); end if; Database.Next (Iter1); if Database.Is_Done (Iter1) then Put_Line ("*** Forward failed for all publishers"); Put_Line ("--- Method => " & Method.Image (Message_New.Get_Method (M))); Put_Line ("--- could not be handled"); end if; end loop Publishers; Subscribers: while not Database.Is_Done (Iter2) loop Message_Transport.Put (Message => Standard.Message_New.Image (Msg), Remote_Host => Identifier.Get_Host (Identifier.Value (Database.Value (Iter2))), Remote_Socket => Identifier.Get_Socket (Identifier.Value (Database.Value (Iter2))), Number_Of_Retry => 10, Retry_Delay => 0.1, Status => S); if S = Message_Transport.Ok then Log ("+++ Propagated notification to subscriber => " & Integer'Image (Database.Value (Iter2))); else Put_Line ("*** Failed to propagate notification to subscriber => " & Integer'Image (Database.Value (Iter2))); Put_Line ("--- Making it stale"); Stale (Behavior => Database.Value (Iter2)); end if; Database.Next (Iter2); end loop Subscribers; end Request;
nblk1=5 nid=3 hdr6=8 [0x00] rec0=1f rec1=00 rec2=01 rec3=01a [0x01] rec0=18 rec1=00 rec2=05 rec3=01c [0x02] rec0=19 rec1=00 rec2=02 rec3=05a [0x03] rec0=0e rec1=00 rec2=04 rec3=000 [0x04] rec0=0d rec1=00 rec2=04 rec3=000 tail 0x215483834867c63b354d4 0x42a00088462060003 Free Block Chain: 0x3: 0000 00 00 00 58 80 2e 20 20 20 28 4d 65 73 73 61 67 ┆ X . (Messag┆