|
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: 7168 (0x1c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Request, seg_04b703, 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 Message_Transport; with Transport; with Max; separate (Broker_Work) procedure Request (M : Message_New.Object; S : Message_Transport.Stream_Id; 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)); Stat : Message_Transport.Status_Code; Given_Response : Message_Transport.Unlimited_String.Variable_String; Msg : Message_New.Object := M; Descriptor_Subscriber, Descriptor_Server : Identifier.Descriptor; use Message_Transport; begin Log (""); Log ("+++ RECEIVED REQUEST FOR " & Method.Image (Message_New.Get_Method (M))); Text_Io.Put_Line ("+++ RECEIVED REQUEST FOR " & Method.Image (Message_New.Get_Method (M))); Count := Count + 1; Memory.Add (Save, Count, Identifier.Search (From => S)); 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"); Descriptor_Server := Identifier.Search ((Identifier.Get_Host (Identifier.Value (Database.Value (Iter1)))), Identifier.Get_Socket (Identifier.Value (Database.Value (Iter1)))); Message_Transport.Put (Stream => Identifier.Get_Stream (Descriptor_Server), Message => Standard.Message_New.Image (Msg), Response => Given_Response, Status => Stat); if Stat = 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 Descriptor_Subscriber := Identifier.Search (Identifier.Get_Host (Identifier.Value (Database.Value (Iter2))), Identifier.Get_Socket (Identifier.Value (Database.Value (Iter2)))); Message_Transport.Put (Stream => Identifier.Get_Stream (Descriptor_Server), Message => Standard.Message_New.Image (Msg), Status => Stat); if Stat = 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=6 nid=5 hdr6=a [0x00] rec0=1b rec1=00 rec2=01 rec3=02c [0x01] rec0=03 rec1=00 rec2=06 rec3=00a [0x02] rec0=1a rec1=00 rec2=02 rec3=01e [0x03] rec0=1d rec1=00 rec2=04 rec3=084 [0x04] rec0=1a rec1=00 rec2=03 rec3=000 [0x05] rec0=06 rec1=00 rec2=05 rec3=001 tail 0x215488f6286826c565566 0x42a00088462060003 Free Block Chain: 0x5: 0000 00 00 00 1a 80 0f 68 20 28 46 72 6f 6d 20 3d 3e ┆ h (From =>┆