|
|
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: 8192 (0x2000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Trans, seg_057449
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Text_Io;
with Byte_Defs;
with Message;
with Bal;
with Identification;
with Transport;
with Transport_Defs;
with Orb_Tools;
with Utils;
package body Trans is
Name_Of_Network : constant Transport_Defs.Network_Name := "TCP/IP";
Orb_Host : constant Transport_Defs.Host_Id :=
Transport.Local_Host (Name_Of_Network);
Orb_Socket : constant Transport_Defs.Socket_Id := (10, 42);
task Reception;
task Emission;
task body Reception is
The_Mess : Message.Tmessage;
The_Receive : Orb_Tools.Data_String;
From_Object : Byte_Defs.Byte_String (0 .. 255);
Connec_Recep : Transport.Connection_Id;
Status_Recep : Transport_Defs.Status_Code;
Cpt : Natural;
Try : Natural := 2;
begin
loop
Transport.Open (Connec_Recep, Status_Recep,
Name_Of_Network, Orb_Socket);
if Transport.Is_Open (Connec_Recep) then
Text_Io.Put_Line ("Receiver : connexion is open...");
else
Text_Io.Put_Line ("Receiver : can't open connexion...");
Try := Try - 1;
end if;
exit when (Try = 0 or Transport.Is_Open (Connec_Recep));
end loop;
if Try = 0 and not Transport.Is_Open (Connec_Recep) then
Text_Io.Put_Line ("Receiver : failed in opening connexion");
end if;
loop
Text_Io.Put_Line ("Receiver : waiting for a connexion ...");
while not Transport.Is_Connected (Connec_Recep) loop
Transport.Connect (Connec_Recep, Status_Recep);
end loop;
Text_Io.Put_Line ("Receiver : Someone is connected");
loop
Transport.Receive (Connec_Recep, Status_Recep,
From_Object, Cpt);
exit when Transport_Defs.Image (Status_Recep) = "OK";
end loop;
Text_Io.Put ("Receiver : Received data : ");
Orb_Tools.Copy (Target => The_Receive,
Source => (From_Object (0 .. Cpt - 1)));
Message.Unfill (Data => The_Receive, Mess => The_Mess);
Text_Io.Put_Line (Orb_Tools.Image (The_Receive));
Bal.Put_Rm (The_Mess);
Transport.Disconnect (Connec_Recep);
end loop;
end Reception;
task body Emission is
From_Orb : Bal.Tmess_To_Send;
The_Mess : Orb_Tools.Data_String;
Connec_Emet : Transport.Connection_Id;
Status_Emet : Transport_Defs.Status_Code;
Obj_Sock : Transport_Defs.Socket_Id (1 .. 2);
Obj_Host : Transport_Defs.Host_Id (1 .. 4);
Cpt : Natural;
Try : Natural := 2;
The_Command, Error : Message.Command_Type;
begin
loop
Transport.Open (Connec_Emet, Status_Emet, Name_Of_Network);
if Transport.Is_Open (Connec_Emet) then
Text_Io.Put_Line ("Transmiter : connexion is open...");
else
Text_Io.Put_Line ("Transmiter : can't open connexion...");
Try := Try - 1;
end if;
exit when (Try = 0 or Transport.Is_Open (Connec_Emet));
end loop;
if Try = 0 and not Transport.Is_Open (Connec_Emet) then
Text_Io.Put_Line ("Transmiter : failed in opening connexion");
end if;
loop
Text_Io.Put_Line ("Transmiter : is waiting for a message from Orb");
while Bal.Is_Empty_Mts loop
null;
end loop;
Bal.Get_Mts (From_Orb);
Message.Fill (The_Mess, From_Orb.Mess);
Text_Io.Put_Line
("Transmiter : try to contact the object located at (" &
Orb_Tools.Image (From_Orb.Des.Sock) &
") with " & Orb_Tools.Image (The_Mess));
Obj_Host := Orb_Tools.Vstring_To_Host (From_Orb.Des.Host);
Obj_Sock := Orb_Tools.Vstring_To_Socket (From_Orb.Des.Sock);
Try := 6;
while not Transport.Is_Connected (Connec_Emet) and Try /= 0 loop
delay 10.0;
Try := Try - 1;
Text_Io.Put_Line ("Transmiter : tries left=" &
Integer'Image (Try));
Transport.Connect (Connec_Emet, Status_Emet,
Obj_Host, Obj_Sock);
end loop;
if Try /= 0 or Transport.Is_Connected (Connec_Emet) then
Text_Io.Put_Line ("Transmiter : object is connected...");
Transport.Transmit
(Connec_Emet, Status_Emet,
Orb_Tools.Vstring_To_Byte_String (The_Mess), Cpt);
Text_Io.Put_Line ("Transmiter : data transmited.");
Transport.Disconnect (Connec_Emet);
else
Text_Io.Put_Line ("Transmiter : object is not responding");
Message.Unfill_Command (From_Orb.Mess, The_Command);
if Message.Command_Type'Image (The_Command) =
Message.Command_Type'Image (Message.Request) then
Error := Message.Rfailed;
else
Error := Message.Ifailed;
end if;
Message.Fill_Command (From_Orb.Mess, Error);
Message.Fill_Origin (From_Orb.Mess, From_Orb.Id);
Bal.Put_Rm (From_Orb.Mess);
end if;
end loop;
end Emission;
end Trans;
nblk1=7
nid=0
hdr6=e
[0x00] rec0=29 rec1=00 rec2=01 rec3=03e
[0x01] rec0=1c rec1=00 rec2=02 rec3=04c
[0x02] rec0=27 rec1=00 rec2=06 rec3=006
[0x03] rec0=00 rec1=00 rec2=07 rec3=06e
[0x04] rec0=1c rec1=00 rec2=04 rec3=00c
[0x05] rec0=18 rec1=00 rec2=05 rec3=06a
[0x06] rec0=16 rec1=00 rec2=03 rec3=001
tail 0x2154e009887c775191e80 0x42a00088462060003