|
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: 12288 (0x3000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Test_Transport_Level, seg_0520ec
└─⟦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; Open_Attempt : Integer := 1; Rec_Buf : Byte_Defs.Byte_String (1 .. 1024); begin for Again in 1 .. 3 loop Open_Loop: for I in Retries 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)); 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 ("+++ Client Socket Open"); exit Open_Loop; end if; end if; end loop Open_Loop; if not Transport.Is_Connected (Connection => Connection) then Transport.Connect (Connection => Connection, Status => Status, -- Remote_Host => Net_Info.R1000_Address, Remote_Host => Net_Info.Sparc_Address, -- Remote_Socket => Net_Info.R1000_Socket, Remote_Socket => Net_Info.Sparc_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 if not Transport.Is_Open (Connection => Connection) then Transport.Open (Connection => Connection, Status => Status, Network => Net_Info.Net_Name, Local_Socket => Net_Info.R1000_Socket); if Status /= Transport_Defs.Ok then Text_Io.Put_Line ("*** Server Socket Open Failed. Error Code: " & Transport_Defs.Image (Status)); return; else Text_Io.Put_Line ("+++ Server Socket Open"); end if; else Text_Io.Put_Line ("--* Server Socket Already Open, reusing socket"); end if; 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=b nid=0 hdr6=16 [0x00] rec0=28 rec1=00 rec2=01 rec3=094 [0x01] rec0=16 rec1=00 rec2=02 rec3=02c [0x02] rec0=18 rec1=00 rec2=03 rec3=048 [0x03] rec0=1e rec1=00 rec2=04 rec3=01e [0x04] rec0=1c rec1=00 rec2=05 rec3=058 [0x05] rec0=26 rec1=00 rec2=06 rec3=006 [0x06] rec0=19 rec1=00 rec2=07 rec3=014 [0x07] rec0=1b rec1=00 rec2=08 rec3=046 [0x08] rec0=1b rec1=00 rec2=09 rec3=05e [0x09] rec0=17 rec1=00 rec2=0a rec3=076 [0x0a] rec0=16 rec1=00 rec2=0b rec3=000 tail 0x21759946087a05ca61be4 0x42a00088462060003