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