|
|
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: 11264 (0x2c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Client_Orb, seg_058381
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Trame_Registration;
with Trame_Publication;
with Trame_Request;
with Message;
with Communication;
with Text_Io;
package body Client_Orb is
use Communication;
use Message;
S : Communication.Status_Code;
function Register (Class : Var_String.V_String)
return Agent_Nb.T_Agent_Nb is
S : Communication.Status_Code;
V : Var_String.V_String;
M : Message.Object;
begin
M := Message.Create
(Class => Message.Registration,
Source => Agent_Nb.Null_Agent_Nb,
Destination => Agent_Nb.Null_Agent_Nb,
Donnees => Trame_Registration.Image
(Trame => Trame_Registration.Create
(Class => Class,
Chanel => Communication.
Get_Chanel)));
Communication.Send
(Message => Message.Image (Message => M),
Remote_Host =>
Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
Remote_Socket =>
Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
Status => S);
Text_Io.Put_Line
("registration " &
Var_String.Image (Com_Chanel.Image (Communication.Get_Chanel)) &
" en cours ");
loop
Communication.Receive (Message => V, Status => S);
Text_Io.Put_Line ("resultat:" & Var_String.Image (V) & " status :" &
Communication.Status_Code'Image (S));
exit when S = Communication.Ok;
if S = Communication.No_Message then
delay (10.0);
end if;
end loop;
M := Message.Value (Message => V);
return Message.Get_Source (M);
end Register;
procedure Unregister (Agent : Agent_Nb.T_Agent_Nb) is
M : Message.Object;
begin
M := Message.Create (Class => Message.Unregistration,
Source => Agent,
Destination => Agent_Nb.Null_Agent_Nb,
Donnees => Var_String.Null_V_String);
Communication.Send
(Message => Message.Image (Message => M),
Remote_Host =>
Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
Remote_Socket =>
Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
Status => S);
end Unregister;
procedure Publication (Agent : Agent_Nb.T_Agent_Nb;
Methode : Var_String.V_String;
Parameter : Var_String.V_String) is
M : Message.Object;
begin
M := Message.Create
(Class => Message.Publication,
Source => Agent,
Destination => Agent_Nb.Null_Agent_Nb,
Donnees => Trame_Publication.Image
(Trame => Trame_Publication.Create
(Methode => Methode,
Parameter => Parameter)));
Communication.Send
(Message => Message.Image (Message => M),
Remote_Host =>
Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
Remote_Socket =>
Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
Status => S);
end Publication;
procedure Unpublication (Agent : Agent_Nb.T_Agent_Nb;
Methode : Var_String.V_String) is
M : Message.Object;
begin
M := Message.Create
(Class => Message.Unpublication,
Source => Agent,
Destination => Agent_Nb.Null_Agent_Nb,
Donnees => Trame_Publication.Image
(Trame => Trame_Publication.Create
(Methode => Methode,
Parameter => Var_String.
Null_V_String)));
Communication.Send
(Message => Message.Image (Message => M),
Remote_Host =>
Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
Remote_Socket =>
Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
Status => S);
end Unpublication;
procedure Request (Agent : Agent_Nb.T_Agent_Nb;
Methode : Var_String.V_String;
Parameter : in out Var_String.V_String;
Ok : out Boolean) is
S : Communication.Status_Code;
V : Var_String.V_String;
M : Message.Object;
Trame : Trame_Request.Object;
begin
M := Message.Create
(Class => Message.Request,
Source => Agent,
Destination => Agent_Nb.Null_Agent_Nb,
Donnees => Trame_Request.Image
(Trame => Trame_Request.Create
(Methode => Methode,
Parameter => Parameter)));
Communication.Send
(Message => Message.Image (Message => M),
Remote_Host =>
Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
Remote_Socket =>
Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
Status => S);
loop
loop
Communication.Receive (Message => V, Status => S);
Text_Io.Put_Line
("resultat:" & Var_String.Image (V) & " status :" &
Communication.Status_Code'Image (S));
exit when S = Communication.Ok;
if S = Communication.No_Message then
delay (10.0);
end if;
end loop;
M := Message.Value (Message => V);
exit when Message.Get_Class (M) = Message.Replay;
exit when Message.Get_Class (M) = Message.Error;
end loop;
Ok := False;
if Message.Get_Class (M) = Message.Replay then
Trame := Trame_Request.Value (S => Message.Get_Donnees (M));
Parameter := Trame_Request.Get_Parameter (Trame);
Ok := True;
end if;
end Request;
procedure Replay (Agent_Source : Agent_Nb.T_Agent_Nb;
Agent_Destination : Agent_Nb.T_Agent_Nb;
Methode : Var_String.V_String;
Parameter : in Var_String.V_String) is
S : Communication.Status_Code;
M : Message.Object;
begin
M := Message.Create
(Class => Message.Replay,
Source => Agent_Source,
Destination => Agent_Destination,
Donnees => Trame_Request.Image
(Trame => Trame_Request.Create
(Methode => Methode,
Parameter => Parameter)));
Communication.Send
(Message => Message.Image (Message => M),
Remote_Host =>
Com_Chanel.Get_Host_Id (O => Com_Chanel.Get_Orb_Chanel),
Remote_Socket =>
Com_Chanel.Get_Socket_Id (O => Com_Chanel.Get_Orb_Chanel),
Status => S);
end Replay;
begin
Communication.Init (Chanel => Com_Chanel.Null_Object, Status => S);
Text_Io.Put_Line ("Initialisation du client :" &
Communication.Status_Code'Image (S));
end Client_Orb;
nblk1=a
nid=a
hdr6=12
[0x00] rec0=21 rec1=00 rec2=01 rec3=00c
[0x01] rec0=1d rec1=00 rec2=08 rec3=00c
[0x02] rec0=1a rec1=00 rec2=07 rec3=014
[0x03] rec0=1a rec1=00 rec2=05 rec3=034
[0x04] rec0=17 rec1=00 rec2=03 rec3=02c
[0x05] rec0=19 rec1=00 rec2=06 rec3=040
[0x06] rec0=1a rec1=00 rec2=09 rec3=064
[0x07] rec0=1b rec1=00 rec2=02 rec3=00e
[0x08] rec0=03 rec1=00 rec2=04 rec3=001
[0x09] rec0=c9 rec1=0f rec2=ac rec3=56e
tail 0x21765993887e2a895e791 0x42a00088462060003
Free Block Chain:
0xa: 0000 00 00 03 fc 80 14 20 20 43 6f 6d 6d 75 6e 69 63 ┆ Communic┆