|
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: 14336 (0x3800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, seg_00b536
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
WITH Byte_Defs; WITH Net_Info; WITH Text_Io; WITH Transport; WITH Transport_Defs; WITH Utils; PACKAGE BODY Test_Transport_Level IS FUNCTION "=" (L, R : Transport_Defs.Status_Code) RETURN Boolean RENAMES Transport_Defs."="; Connection_Retry_Interval : CONSTANT Duration := 60.0; TYPE Retries IS RANGE 1 .. 3; PROCEDURE Start_Client IS Status : Transport_Defs.Status_Code := Transport_Defs.Ok; Connection : Transport.Connection_Id; Message : CONSTANT Byte_Defs.Byte_String := Utils.String_To_Byte_String (Net_Info.Test_String); Bytes_Transmitted : Natural; Bytes_Received : Natural; Rec_Buf : Byte_Defs.Byte_String (1 .. 1024); BEGIN FOR I IN 1 .. 3 LOOP IF NOT Transport.Is_Open (Connection => Connection) THEN Transport.Open (Connection => Connection, Status => Status, Network => Net_Info.Net_Name, Local_Socket => Transport_Defs.Null_Socket_Id); IF Status /= Transport_Defs.Ok THEN Text_Io.Put_Line ("*** Client Socket Open Failed. Error Code: " & Transport_Defs.Image (Status)); RETURN; ELSE Text_Io.Put_Line ("+++ Client Socket Open"); END IF; ELSE Text_Io.Put_Line ("--* Client Socket Already Open, reusing socket"); END IF; IF NOT Transport.Is_Connected (Connection => Connection) THEN Transport.Connect (Connection => Connection, Status => Status, -- Remote_Host => Net_Info.Sparc_Address, Remote_Host => Net_Info.R1000_Address, -- Remote_Socket => Net_Info.Sparc_Socket, Remote_Socket => Net_Info.R1000_Socket, Max_Wait => Duration'Last); IF Status /= Transport_Defs.Ok THEN Text_Io.Put_Line ("*** Client Connect Failed. Error Code: " & Transport_Defs.Image (Status)); RETURN; ELSE Text_Io.Put_Line ("+++ Client Connected"); END IF; ELSE Text_Io.Put_Line ("--* Client Socket Already Connected"); END IF; Data_Transfer_Loop: FOR I IN 1 .. 10 LOOP Bytes_Transmitted := 0; Transport.Transmit (Connection => Connection, Status => Status, Data => Message, Count => Bytes_Transmitted, Max_Wait => Duration'Last, More => False); IF Status /= Transport_Defs.Ok THEN Text_Io.Put_Line ("*** Client Transmission Failed. Error Code: " & Transport_Defs.Image (Status)); EXIT Data_Transfer_Loop; ELSIF Bytes_Transmitted /= Message'Length THEN Text_Io.Put_Line ("--* Client Transmission Incomplete."); ELSE Text_Io.Put_Line ("+++ Client Tranmission Completed."); END IF; Transport.Receive (Connection => Connection, Status => Status, Data => Rec_Buf, Count => Bytes_Received, Max_Wait => Duration'Last); IF Status /= Transport_Defs.Ok THEN Text_Io.Put_Line ("*** Client Receive Failed. Error Code: " & Transport_Defs.Image (Status)); EXIT Data_Transfer_Loop; ELSE Text_Io.Put_Line ("+++ Client Received: " & Utils.Byte_String_To_String (Rec_Buf (1 .. Bytes_Received))); END IF; END LOOP Data_Transfer_Loop; IF Transport.Is_Connected (Connection => Connection) THEN Transport.Disconnect (Connection => Connection); END IF; IF Transport.Is_Open (Connection => Connection) THEN Transport.Close (Connection => Connection); END IF; DELAY 5.0; END LOOP; END Start_Client; PROCEDURE Start_Server IS Status : Transport_Defs.Status_Code := Transport_Defs.Ok; Connection : Transport.Connection_Id; Bytes_Transmitted : Natural; Bytes_Received : Natural; Rec_Buf : Byte_Defs.Byte_String (1 .. 1024); BEGIN Accept_Loop: LOOP Open_Loop: FOR Try IN Retries LOOP IF NOT Transport.Is_Open (Connection => Connection) THEN Transport.Open (Connection => Connection, Status => Status, Network => Net_Info.Net_Name, Local_Socket => Net_Info.Sparc_Socket); IF Status /= Transport_Defs.Ok THEN Text_Io.Put_Line ("*** Server Socket Open Failed. Error Code: " & Transport_Defs.Image (Status)); IF Status = Transport_Defs.Socket_In_Use THEN Text_Io.Put_Line ("--- will retry."); DELAY Connection_Retry_Interval; ELSE RETURN; END IF; ELSE Text_Io.Put_Line ("+++ Server Socket Open"); EXIT Open_Loop; END IF; ELSE Text_Io.Put_Line ("--* Server Socket Already Open, reusing socket"); EXIT Open_Loop; END IF; END LOOP Open_Loop; IF NOT Transport.Is_Connected (Connection => Connection) THEN Transport.Connect (Connection => Connection, Status => Status, Max_Wait => Duration'Last); IF Status /= Transport_Defs.Ok THEN Text_Io.Put_Line ("*** Server Connect Failed. Error Code: " & Transport_Defs.Image (Status)); RETURN; ELSE Text_Io.Put_Line ("+++ Server Connected"); END IF; ELSE Text_Io.Put_Line ("--* Server Socket Already Connected"); END IF; Data_Reception_Loop: LOOP Bytes_Received := 0; Transport.Receive (Connection => Connection, Status => Status, Data => Rec_Buf, Count => Bytes_Received, Max_Wait => Duration'Last); IF Status /= Transport_Defs.Ok THEN Text_Io.Put_Line ("*** Server Receive Failed. Error Code: " & Transport_Defs.Image (Status)); EXIT Data_Reception_Loop; ELSE Text_Io.Put_Line ("+++ Server Received: " & Utils.Byte_String_To_String (Rec_Buf (1 .. Bytes_Received))); END IF; IF Bytes_Received > 0 THEN Bytes_Transmitted := 0; Transport.Transmit (Connection => Connection, Status => Status, Data => Rec_Buf (1 .. Bytes_Received), Count => Bytes_Transmitted, Max_Wait => Duration'Last, More => False); IF Status /= Transport_Defs.Ok THEN Text_Io.Put_Line ("*** Server Transmission Failed. Error Code: " & Transport_Defs.Image (Status)); EXIT Data_Reception_Loop; ELSIF Bytes_Transmitted /= Bytes_Received THEN Text_Io.Put_Line ("--* Server Transmission Incomplete."); ELSE Text_Io.Put_Line ("+++ Server Tranmission Completed."); END IF; END IF; END LOOP Data_Reception_Loop; IF Transport.Is_Connected (Connection => Connection) THEN Transport.Disconnect (Connection => Connection); END IF; IF Transport.Is_Open (Connection => Connection) THEN Transport.Close (Connection => Connection); END IF; END LOOP Accept_Loop; END Start_Server; END Test_Transport_Level;
nblk1=d nid=0 hdr6=1a [0x00] rec0=27 rec1=00 rec2=01 rec3=042 [0x01] rec0=01 rec1=00 rec2=0d rec3=030 [0x02] rec0=1a rec1=00 rec2=02 rec3=082 [0x03] rec0=1d rec1=00 rec2=03 rec3=068 [0x04] rec0=1e rec1=00 rec2=04 rec3=01e [0x05] rec0=22 rec1=00 rec2=05 rec3=046 [0x06] rec0=00 rec1=00 rec2=0c rec3=01e [0x07] rec0=1a rec1=00 rec2=06 rec3=00e [0x08] rec0=00 rec1=00 rec2=0b rec3=01a [0x09] rec0=1c rec1=00 rec2=07 rec3=042 [0x0a] rec0=1f rec1=00 rec2=08 rec3=056 [0x0b] rec0=1a rec1=00 rec2=09 rec3=03c [0x0c] rec0=21 rec1=00 rec2=0a rec3=000 tail 0x2170835b481fa70624342 0x489e0066482863c01