|
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: 16384 (0x4000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Communication, seg_056a99
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Text_Io; with Utils; package body Communication is Network : constant Transport_Defs.Network_Name := "TCP/IP"; Count : Natural; Sock : constant Transport_Defs.Socket_Id (1 .. 2) := (16#0A#, 16#2F#); -- procedure qui extrait la socket et le host correspondant a la connection--------------------- procedure Format_Entete (Connection : Transport.Connection_Id; Socket : out Transport_Defs.Socket_Id; Host : out Transport_Defs.Host_Id); -- procedure qui extrait la socket et le host places en tete de trame---------------------------- procedure Unformat_Entete (Trame : Byte_Defs.Byte_String; Socket : out Transport_Defs.Socket_Id; Host : out Transport_Defs.Host_Id); procedure Ouvrir_Orb (Connection : in out Transport.Connection_Id) is Status : Transport_Defs.Status_Code; begin if not Transport.Is_Open (Connection) then Text_Io.Put ("ouverture reception : "); Transport.Open (Connection, Status, Network, Sock); Text_Io.Put_Line (Transport_Defs.Image (Status)); else Text_Io.Put_Line ("connection deja ouverte"); end if; end Ouvrir_Orb; procedure Ouvrir_Autre (Connection : in out Transport.Connection_Id) is Status : Transport_Defs.Status_Code; begin if not Transport.Is_Open (Connection) then Text_Io.Put ("ouverture emission : "); Transport.Open (Connection, Status, Network); Text_Io.Put_Line (Transport_Defs.Image (Status)); else Text_Io.Put_Line ("connection deja ouverte"); end if; end Ouvrir_Autre; procedure Fermer (Connection : Transport.Connection_Id) is begin if Transport.Is_Open (Connection) then Text_Io.Put_Line ("fermeture connection"); Transport.Close (Connection); else Text_Io.Put_Line ("connection deja fermee"); end if; end Fermer; procedure Fermer_Orb (Connection : Transport.Connection_Id) is begin if Transport.Is_Open (Connection) then Text_Io.Put_Line ("fermeture connection"); Transport.Close (Connection); else Text_Io.Put_Line ("connection deja fermee"); end if; end Fermer_Orb; procedure Reception (Trame : in out Byte_Defs.Byte_String; Connection : Transport.Connection_Id) is Status1 : Transport_Defs.Status_Code; Status2 : Transport_Defs.Status_Code; begin Text_Io.Put_Line (" reception en attente d'un message "); Transport.Connect (Connection, Status1); Text_Io.Put_Line ("status connection reception : " & Transport_Defs.Image (Status1)); if Transport.Is_Connected (Connection) then Transport.Receive (Connection, Status2, Trame, Count); Text_Io.Put_Line ("status reception : " & Transport_Defs.Image (Status2)); Transport.Disconnect (Connection); Text_Io.Put_Line ("reception deconnectee"); else Text_Io.Put_Line ("message non recu car echec de connection"); end if; Text_Io.Put_Line ("fin reception"); end Reception; procedure Reception_Orb (Data : in out Byte_Defs.Byte_String; Connection : Transport.Connection_Id; Socket : out Transport_Defs.Socket_Id; Host : out Transport_Defs.Host_Id) is Status1 : Transport_Defs.Status_Code; Status2 : Transport_Defs.Status_Code; begin Text_Io.Put_Line (" reception en attente d'un message "); Transport.Connect (Connection, Status1); Text_Io.Put_Line ("status connection reception : " & Transport_Defs.Image (Status1)); if Transport.Is_Connected (Connection) then Transport.Receive (Connection, Status2, Data, Count); Text_Io.Put_Line ("status reception : " & Transport_Defs.Image (Status2)); Unformat_Entete (Data, Socket, Host); Transport.Disconnect (Connection); Text_Io.Put_Line ("reception deconnectee"); else Text_Io.Put_Line ("message non recu car echec de connection"); end if; Text_Io.Put_Line ("fin reception"); end Reception_Orb; procedure Emission (Trame : Byte_Defs.Byte_String; Connection_Emission : Transport.Connection_Id; Connection_Reception : Transport.Connection_Id) is Rhost : Transport_Defs.Host_Id (1 .. 4) := (193, 54, 146, 132); Status1 : Transport_Defs.Status_Code; Status2 : Transport_Defs.Status_Code; Socket : Transport_Defs.Socket_Id (1 .. 2); Host : Transport_Defs.Host_Id (1 .. 4); use Byte_Defs; begin Format_Entete (Connection_Reception, Socket, Host); Text_Io.Put_Line ("debut emission"); Text_Io.Put_Line ("en attente de connection vers l'orb, veuillez patienter, ceci prend un certain temps"); while not (Transport.Is_Connected (Connection_Emission)) loop Transport.Connect (Connection_Emission, Status1, Rhost, Sock); end loop; if Transport.Is_Connected (Connection_Emission) then Text_Io.Put_Line ("status connection emission : " & Transport_Defs.Image (Status1)); Transport.Transmit (Connection_Emission, Status2, Byte_Defs.Byte_String (Socket) & Byte_Defs.Byte_String (Host) & Trame, Count); Text_Io.Put_Line ("status transmission : " & Transport_Defs.Image (Status2)); Text_Io.Put_Line ("message transmis : " & Utils.Byte_String_To_String (Trame)); Transport.Disconnect (Connection_Emission); Text_Io.Put_Line ("emission deconnectee"); else Text_Io.Put_Line ("message non transmis car echec de connection"); Transport.Disconnect (Connection_Emission); end if; Text_Io.Put_Line ("fin emission"); end Emission; procedure Emission_Orb (Trame : Byte_Defs.Byte_String; Connection : Transport.Connection_Id; Socket : Transport_Defs.Socket_Id; Host : Transport_Defs.Host_Id) is --Rhost : Transport_Defs.Host_Id (1 .. 4) := (193, 54, 146, 133); Status1 : Transport_Defs.Status_Code; Status2 : Transport_Defs.Status_Code; use Byte_Defs; begin Text_Io.Put_Line ("debut emission"); Text_Io.Put_Line ("socket avant emission orb: " & Utils.Byte_String_To_String (Byte_Defs.Byte_String (Socket))); Text_Io.Put_Line ("host avant emission orb : " & Utils.Byte_String_To_String (Byte_Defs.Byte_String (Host))); Text_Io.Put_Line ("en attente de connection"); while not (Transport.Is_Connected (Connection)) loop Transport.Connect (Connection, Status1, Host, Socket); end loop; if Transport.Is_Connected (Connection) then Text_Io.Put_Line ("status connection emission : " & Transport_Defs.Image (Status1)); Transport.Transmit (Connection, Status2, Byte_Defs.Byte_String (Socket) & Byte_Defs.Byte_String (Host) & Trame, Count); Text_Io.Put_Line ("status transmission : " & Transport_Defs.Image (Status2)); Text_Io.Put_Line ("message transmis : " & Utils.Byte_String_To_String (Trame)); Transport.Disconnect (Connection); Text_Io.Put_Line ("emission deconnectee"); else Text_Io.Put_Line ("message non transmis car echec de connection"); Transport.Disconnect (Connection); end if; Text_Io.Put_Line ("fin emission"); end Emission_Orb; procedure Format_Entete (Connection : Transport.Connection_Id; Socket : out Transport_Defs.Socket_Id; Host : out Transport_Defs.Host_Id) is begin Socket := (Transport.Local_Socket (Connection)); Host := (Transport.Local_Host (Connection)); end Format_Entete; procedure Unformat_Entete (Trame : Byte_Defs.Byte_String; Socket : out Transport_Defs.Socket_Id; Host : out Transport_Defs.Host_Id) is begin Socket := Transport_Defs.Socket_Id (Trame (1 .. 2)); Host := Transport_Defs.Host_Id (Trame (3 .. 6)); end Unformat_Entete; end Communication;
nblk1=f nid=b hdr6=16 [0x00] rec0=18 rec1=00 rec2=01 rec3=02c [0x01] rec0=19 rec1=00 rec2=0d rec3=008 [0x02] rec0=1a rec1=00 rec2=05 rec3=02e [0x03] rec0=14 rec1=00 rec2=0f rec3=060 [0x04] rec0=14 rec1=00 rec2=04 rec3=02c [0x05] rec0=01 rec1=00 rec2=02 rec3=018 [0x06] rec0=12 rec1=00 rec2=03 rec3=020 [0x07] rec0=13 rec1=00 rec2=0e rec3=05a [0x08] rec0=13 rec1=00 rec2=0c rec3=026 [0x09] rec0=15 rec1=00 rec2=09 rec3=02c [0x0a] rec0=0b rec1=00 rec2=0a rec3=000 [0x0b] rec0=0e rec1=00 rec2=0c rec3=000 [0x0c] rec0=14 rec1=00 rec2=0d rec3=046 [0x0d] rec0=15 rec1=00 rec2=0e rec3=044 [0x0e] rec0=16 rec1=00 rec2=0f rec3=000 tail 0x2176306e887c49ada242d 0x42a00088462060003 Free Block Chain: 0xb: 0000 00 06 00 17 80 14 74 5f 4c 69 6e 65 20 28 22 73 ┆ t_Line ("s┆ 0x6: 0000 00 08 00 04 80 01 43 01 02 03 04 05 06 07 08 09 ┆ C ┆ 0x8: 0000 00 07 03 fc 80 1c 20 55 74 69 6c 73 2e 42 79 74 ┆ Utils.Byt┆ 0x7: 0000 00 00 03 fc 80 2f 20 20 20 20 20 20 54 65 78 74 ┆ / Text┆