|
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: 22528 (0x5800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Communication, seg_0550b6
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Transport; with Text_Io; with Transport_Defs; with Utils; with Byte_Defs; with Our_Constantes; use Our_Constantes; with Message; use Message; with Our_String; package body Communication is -- Creation de la connection -- ========================= procedure Connection_Transmitter (The_Message : in Message.Type_Of_Message; The_Connection_Data : in out Connection_Data) is begin Transport.Open (The_Connection_Data.Connection, The_Connection_Data.Status, "TCP/IP"); if Transport.Is_Open (The_Connection_Data.Connection) then Text_Io.Put_Line ("connection ouverte OK"); end if; while not (Transport.Is_Connected (The_Connection_Data.Connection)) loop Transport.Connect (The_Connection_Data.Connection, The_Connection_Data.Status, The_Message.The_Host_Machine_Receive, The_Message.The_Socket_Receive, Duration'Last); Text_Io.Put_Line ("essai connection transmission"); end loop; if Transport.Is_Connected (The_Connection_Data.Connection) then Text_Io.Put_Line ("Connection OK"); end if; end Connection_Transmitter; -- Transmission du message -- ======================= procedure Transmitter (The_Message : in Message.Type_Of_Message; The_Connection_Data : in out Connection_Data) is String_Tempo : Our_String.Variable_String; procedure Transmit_String (S : Our_String.Variable_String; The_Connection_Data : in out Connection_Data) is begin Transport.Transmit (The_Connection_Data.Connection, The_Connection_Data.Status, Utils.String_To_Byte_String (Our_String.Image (S)), The_Connection_Data.Count); end Transmit_String; begin Our_String.Copy (String_Tempo, Type_Of_Command'Image (The_Message.The_Command)); Our_String.Append (String_Tempo, "+++"); Transmit_String (String_Tempo, The_Connection_Data); Transmit_String (Our_String.Value (Utils.Byte_String_To_String (Byte_Defs.Byte_String (The_Message.The_Host_Machine_Send))), The_Connection_Data); Transmit_String (Our_String.Value (Natural'Image (The_Message.The_Id_User_Send)), The_Connection_Data); Transmit_String (Our_String.Value (Utils.Byte_String_To_String (Byte_Defs.Byte_String (The_Message.The_Host_Machine_Receive))), The_Connection_Data); Transmit_String (Our_String.Value (Natural'Image (The_Message.The_Id_User_Receive)), The_Connection_Data); Transmit_String (Our_String.Value (Utils.Byte_String_To_String (Byte_Defs.Byte_String (The_Message.The_Host_Machine_To_Execute))), The_Connection_Data); if (The_Message.Command_Is_Ok = True) then Transmit_String (Our_String.Value (Natural'Image (1)), The_Connection_Data); else Transmit_String (Our_String.Value (Natural'Image (0)), The_Connection_Data); end if; Transmit_String (Our_String.Value (Natural'Image (The_Message. Number_Of_The_Question)), The_Connection_Data); Transmit_String (Our_String.Value (Utils.Byte_String_To_String (Byte_Defs.Byte_String (The_Message.The_Socket_Send))), The_Connection_Data); Transmit_String (Our_String.Value (Utils.Byte_String_To_String (Byte_Defs.Byte_String (The_Message.The_Socket_Receive))), The_Connection_Data); Transmit_String (Our_String.Value (Utils.Byte_String_To_String (Byte_Defs.Byte_String (The_Message.The_Socket_To_Execute))), The_Connection_Data); Our_String.Copy (String_Tempo, The_Message.Data); Our_String.Append (String_Tempo, "+++"); Transmit_String (String_Tempo, The_Connection_Data); end Transmitter; procedure Disconnection (The_Connection_Data : in out Connection_Data) is begin Transport.Disconnect (The_Connection_Data.Connection); Transport.Close (The_Connection_Data.Connection); Text_Io.Put_Line ("connection fermee"); end Disconnection; -- etablissement de la connection -- ============================== procedure Connection_Receiver (The_Socket : in Transport_Defs.Socket_Id; The_Connection_Data : in out Connection_Data) is begin Transport.Open (The_Connection_Data.Connection, The_Connection_Data.Status, "TCP/IP", The_Socket); if Transport.Is_Open (The_Connection_Data.Connection) then Text_Io.Put_Line ("connection ouverte OK"); end if; while not (Transport.Is_Connected (The_Connection_Data.Connection)) loop Transport.Connect (The_Connection_Data.Connection, The_Connection_Data.Status, Duration'Last); Text_Io.Put_Line ("essai connection reception"); end loop; if Transport.Is_Connected (The_Connection_Data.Connection) then Text_Io.Put_Line ("Connection OK"); end if; end Connection_Receiver; -- reception -- ========= procedure Receiver (The_Message : out Message.Type_Of_Message; The_Connection_Data : in out Connection_Data) is Data : Byte_Defs.Byte_String (1 .. 255); I : Positive := 1; Data_One : Byte_Defs.Byte_String (1 .. 2); Data_Four : Byte_Defs.Byte_String (1 .. 4); String_Tempo : Our_String.Variable_String; End_Of_Data : Boolean := False; Last : Positive; begin -- The_Message.The_Command Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data, The_Connection_Data.Count); String_Tempo := Our_String.Value (Utils.Byte_String_To_String (Data)); End_Of_Data := False; I := 1; while not End_Of_Data and I /= Our_Constantes.Length_Of_A_Line loop if (Our_String.Char_At (String_Tempo, I) = '+') then if (Our_String.Char_At (String_Tempo, I) = '+') then if (Our_String.Char_At (String_Tempo, I) = '+') then String_Tempo := Our_String.Value (Utils.Byte_String_To_String (Data)); Our_String.Set_Length (String_Tempo, I - 1); End_Of_Data := True; else I := I + 1; end if; else I := I + 1; end if; else I := I + 1; end if; end loop; Text_Io.Put (" The_Message.The_Command "); Text_Io.Put_Line (Our_String.Image (String_Tempo)); Our_Enumeration.Get (Our_String.Image (String_Tempo), The_Message.The_Command, Last); -- The_Message.The_Socket_Machine_Send Text_Io.Put_Line (""); Text_Io.Put (" The_Message.The_Id_Machine_Send "); Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_Four, The_Connection_Data.Count); The_Message.The_Host_Machine_Send := Transport_Defs.Host_Id (Data_Four); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_Four)); -- The_Message.The_Id_User_Send Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_One, The_Connection_Data.Count); The_Message.The_Id_User_Send := Natural'Value (Utils.Byte_String_To_String (Data_One)); Text_Io.Put_Line (""); Text_Io.Put (" The_Message.The_Id_User_Send "); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_One)); -- The_Message.The_Host_Machine_Receive Text_Io.Put_Line (""); Text_Io.Put (" The_Message.The_Id_Machine_Receive "); Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_Four, The_Connection_Data.Count); The_Message.The_Host_Machine_Receive := Transport_Defs.Host_Id (Data_Four); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_Four)); -- The_Message.The_Id_User_Receive Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_One, The_Connection_Data.Count); The_Message.The_Id_User_Receive := Natural'Value (Utils.Byte_String_To_String (Data_One)); Text_Io.Put_Line (""); Text_Io.Put (" The_Message.The_Id_User_Receive "); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_One)); -- The_Message.The_Socket_Machine_To_Execute Text_Io.Put_Line (""); Text_Io.Put (" The_Message.The_Id_Machine_To_Execute "); Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_Four, The_Connection_Data.Count); The_Message.The_Host_Machine_To_Execute := Transport_Defs.Host_Id (Data_Four); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_Four)); --The_Message.Command_Is_Ok Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_One, The_Connection_Data.Count); Text_Io.Put_Line (""); Text_Io.Put (" The_Message.Command_Is_Ok "); if (Natural'Value (Utils.Byte_String_To_String (Data_One)) = 1) then The_Message.Command_Is_Ok := True; Text_Io.Put ("True"); else The_Message.Command_Is_Ok := False; Text_Io.Put ("False"); end if; -- The_Message.Number_Of_The_Question Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_One, The_Connection_Data.Count); The_Message.Number_Of_The_Question := Natural'Value (Utils.Byte_String_To_String (Data_One)); Text_Io.Put_Line (""); Text_Io.Put (" The_Message.Number_Of_The_Question "); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_One)); -- The_Message.The_Socket_Send Text_Io.Put_Line (""); Text_Io.Put (" The_Message.The_Socket_Send "); Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_Four, The_Connection_Data.Count); The_Message.The_Socket_Send := Transport_Defs.Socket_Id (Data_Four); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_Four)); -- The_Message.The_Socket_Receive Text_Io.Put_Line (""); Text_Io.Put (" The_Message.The_Socket_Receive "); Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_Four, The_Connection_Data.Count); The_Message.The_Socket_Receive := Transport_Defs.Socket_Id (Data_Four); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_Four)); -- The_Message.The_Socket_To_Execute Text_Io.Put_Line (""); Text_Io.Put (" The_Message.The_Socket_To_Execute "); Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data_Four, The_Connection_Data.Count); The_Message.The_Socket_To_Execute := Transport_Defs.Socket_Id (Data_Four); Text_Io.Put_Line (Utils.Byte_String_To_String (Data_Four)); -- The_Message.Data Transport.Receive (The_Connection_Data.Connection, The_Connection_Data.Status, Data, The_Connection_Data.Count); String_Tempo := Our_String.Value (Utils.Byte_String_To_String (Data)); End_Of_Data := False; I := 1; while not End_Of_Data and I /= Our_Constantes.Length_Of_A_Line loop if (Our_String.Char_At (String_Tempo, I) = '+') then if (Our_String.Char_At (String_Tempo, I) = '+') then if (Our_String.Char_At (String_Tempo, I) = '+') then String_Tempo := Our_String.Value (Utils.Byte_String_To_String (Data)); Our_String.Set_Length (String_Tempo, I - 1); End_Of_Data := True; else I := I + 1; end if; else I := I + 1; end if; else I := I + 1; end if; end loop; Text_Io.Put_Line (""); Text_Io.Put (" The_Message.Data "); Text_Io.Put (Our_String.Image (String_Tempo)); The_Message.Data := String_Tempo; end Receiver; begin null; end Communication;
nblk1=15 nid=7 hdr6=20 [0x00] rec0=21 rec1=00 rec2=01 rec3=066 [0x01] rec0=1c rec1=00 rec2=0b rec3=064 [0x02] rec0=18 rec1=00 rec2=0f rec3=040 [0x03] rec0=18 rec1=00 rec2=0e rec3=010 [0x04] rec0=14 rec1=00 rec2=0d rec3=048 [0x05] rec0=1f rec1=00 rec2=10 rec3=022 [0x06] rec0=1b rec1=00 rec2=09 rec3=044 [0x07] rec0=15 rec1=00 rec2=08 rec3=004 [0x08] rec0=19 rec1=00 rec2=0a rec3=04a [0x09] rec0=16 rec1=00 rec2=11 rec3=04e [0x0a] rec0=07 rec1=00 rec2=13 rec3=07a [0x0b] rec0=17 rec1=00 rec2=14 rec3=012 [0x0c] rec0=17 rec1=00 rec2=04 rec3=07a [0x0d] rec0=16 rec1=00 rec2=0c rec3=01e [0x0e] rec0=13 rec1=00 rec2=02 rec3=046 [0x0f] rec0=13 rec1=00 rec2=15 rec3=000 [0x10] rec0=1a rec1=00 rec2=07 rec3=034 [0x11] rec0=0f rec1=00 rec2=0c rec3=000 [0x12] rec0=0d rec1=00 rec2=0c rec3=000 [0x13] rec0=0d rec1=00 rec2=0c rec3=000 [0x14] rec0=00 rec1=00 rec2=00 rec3=000 tail 0x2154d2c8487bc3d4a64ae 0x42a00088462060003 Free Block Chain: 0x7: 0000 00 06 00 08 80 02 73 3b 02 00 00 00 4f 66 5f 44 ┆ s; Of_D┆ 0x6: 0000 00 03 00 9a 80 11 2c 20 52 65 73 75 6c 74 5f 53 ┆ , Result_S┆ 0x3: 0000 00 05 00 09 80 06 20 20 20 20 20 20 06 20 3a 3d ┆ :=┆ 0x5: 0000 00 12 00 34 80 0b 65 72 5f 53 65 6e 64 29 29 29 ┆ 4 er_Send)))┆ 0x12: 0000 00 00 00 6b 00 39 20 20 20 20 20 20 20 20 20 20 ┆ k 9 ┆