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