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