|
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: 10240 (0x2800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Client2, seg_056a9f
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Text_Io; with Transport; with Communication; with V_String; with Competence_Heure; package body Client2 is Connection1, Connection2 : Transport.Connection_Id; Ouverture_Reception : Boolean := False; Arret_General : Boolean := False; Dernier_Message : Boolean := False; task Emission1 is entry Emission_Message (O : in out Message.Objet); entry Arret; entry Go; end Emission1; task Reception2 is entry Arret; entry Go; end Reception2; procedure Traitement (O : in out Message.Objet); task body Emission1 is O : Message.Objet; Stop : Boolean := False; Dest : Integer := 0; use Message; begin loop accept Go do Communication.Ouvrir_Autre (Connection1); while not Ouverture_Reception loop Text_Io.Put_Line ("reception non ouverte"); end loop; Message.Enregistrement (O); Message.Emission (O, Connection1, Connection2); Text_Io.Put_Line ("enregistrement client effectue"); end Go; loop select accept Emission_Message (O : in out Message.Objet) do Message.Emission (O, Connection1, Connection2); if Message.Consulter_Typ (O) = Message.Service_Result then Dernier_Message := True; Dest := Message.Consulter_Destinataire (O); end if; Text_Io.Put_Line ("message transmis"); end Emission_Message; or accept Arret do Communication.Fermer (Connection1); Stop := True; end Arret; else if Dernier_Message then Dernier_Message := False; Message.Modifier_Typ (O, Message.Unregistration); Message.Modifier_Expediteur (O, Dest); Message.Emission (O, Connection1, Connection2); end if; end select; exit when Stop; end loop; exit when Stop; end loop; Text_Io.Put_Line ("fin emission"); end Emission1; task body Reception2 is O : Message.Objet; Stop : Boolean := False; begin loop accept Go do Communication.Ouvrir_Autre (Connection2); Ouverture_Reception := True; end Go; loop select accept Arret do Communication.Fermer (Connection2); Stop := True; end Arret; else Text_Io.Put_Line ("avant reception client"); if Arret_General = True then Communication.Fermer (Connection2); Stop := True; else Message.Reception (O, Connection2); Text_Io.Put_Line ("apres reception client"); Message.Afficher (O); Text_Io.Put_Line ("fin affichage"); Traitement (O); end if; end select; exit when Stop; end loop; exit when Stop; end loop; Text_Io.Put_Line ("fin reception"); Text_Io.Put_Line ("fermeture generale"); end Reception2; procedure Traitement (O : in out Message.Objet) is Typ : Message.Type_Message; Service : V_String.Variable_String := Competence_Heure.Service; begin Text_Io.Put_Line ("debut traitement"); Typ := Message.Consulter_Typ (O); case Typ is --cas valables pour les clients et les serveurs when Message.Answer_Registration => Text_Io.Put_Line ("answer_registration arrive du cote client"); Text_Io.Put_Line ("**************************************"); Text_Io.Put_Line (" mon identificateur unique est : " & Integer'Image (Message.Consulter_Expediteur (O))); Text_Io.Put_Line ("*************************************"); Message.Incrementer_Ordre (O); Traitement_Bis (O); Emission1.Emission_Message (O); when Message.Answer_Unregistration => Text_Io.Put_Line ("accuse reception unregistration"); Arret; -- cas pour les clients when Message.Your_Answer => Text_Io.Put_Line ("reponse au service demande arrive chez le client"); Arret; when Message.Service_Not_Available => Text_Io.Put_Line ("je suis decu, le service demande n'existe pas"); Arret; --cas pour les serveurs when Message.Service_Added => Text_Io.Put_Line ("accuse reception de l'enregistrement du service"); Message.Incrementer_Ordre (O); when Message.Message_For_Server => Text_Io.Put_Line ("demande de service pour le serveur"); Message.Modifier_Donnee (O, Competence_Heure.Give_Time); Message.Modifier_Typ (O, Message.Service_Result); Emission1.Emission_Message (O); when others => Text_Io.Put_Line ("autre cas non traite donc arret de l'orb"); Arret; end case; end Traitement; procedure Mise_En_Route is begin Reception2.Go; Emission1.Go; end Mise_En_Route; procedure Arret is begin Emission1.Arret; Arret_General := True; end Arret; end Client2;
nblk1=9 nid=2 hdr6=10 [0x00] rec0=26 rec1=00 rec2=01 rec3=06e [0x01] rec0=16 rec1=00 rec2=09 rec3=036 [0x02] rec0=15 rec1=00 rec2=06 rec3=026 [0x03] rec0=19 rec1=00 rec2=08 rec3=012 [0x04] rec0=18 rec1=00 rec2=05 rec3=026 [0x05] rec0=09 rec1=00 rec2=03 rec3=00c [0x06] rec0=15 rec1=00 rec2=07 rec3=074 [0x07] rec0=12 rec1=00 rec2=04 rec3=000 [0x08] rec0=18 rec1=00 rec2=04 rec3=000 tail 0x21763083887c49c452eee 0x42a00088462060003 Free Block Chain: 0x2: 0000 00 00 00 12 80 0f 65 63 65 70 74 69 6f 6e 20 6e ┆ eception n┆