|
|
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: 11264 (0x2c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Message, seg_0569c9
└─⟦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 Communication;
with Utils;
package body Message is
Longueur_Entete : Positive := 6;
procedure Get (Trame : V_String.Variable_String;
I : in out Positive;
Champs : in out V_String.Variable_String;
Car : Character);
procedure Enregistrement (O : out Objet) is
begin
Construire (0, 0, 0, Registration, V_String.Value (""), O);
Text_Io.Put_Line ("construction regist");
end Enregistrement;
procedure Ajout_Service (O : in out Objet;
Service : V_String.Variable_String) is
begin
Construire (0, O.Expediteur, O.Ordre, Publication, Service, O);
end Ajout_Service;
procedure Demande (O : in out Objet; Service : V_String.Variable_String) is
begin
Construire (0, O.Expediteur, O.Ordre, Request, Service, O);
end Demande;
procedure Construire (Dest : Integer;
Exp : Integer;
Ordre : Integer;
Typ : Type_Message;
Donnee : V_String.Variable_String;
O : out Objet) is
begin
O.Destinataire := Dest;
O.Expediteur := Exp;
O.Ordre := Ordre;
O.Typ := Typ;
O.Donnee := Donnee;
end Construire;
procedure Afficher (O : Objet) is
begin
Text_Io.Put_Line ("le destinataire est : " &
Integer'Image (O.Destinataire));
Text_Io.Put_Line ("l'expediteur est : " & Integer'Image (O.Expediteur));
Text_Io.Put_Line ("le numero du message est : " &
Integer'Image (O.Ordre));
Text_Io.Put_Line ("le type du message est : " &
Type_Message'Image (O.Typ));
Text_Io.Put_Line ("la donnee du message est : " &
V_String.Image (O.Donnee));
end Afficher;
function Image (O : Objet) return Byte_Defs.Byte_String is
begin
return (Utils.String_To_Byte_String
(Integer'Image (O.Destinataire) & '%' &
Integer'Image (O.Expediteur) & '%' &
Integer'Image (O.Ordre) & '%' & Type_Message'Image (O.Typ) &
'%' & V_String.Image (O.Donnee) & '%'));
end Image;
procedure Get (Trame : V_String.Variable_String;
I : in out Positive;
Champs : in out V_String.Variable_String;
Car : Character) is
A : Positive := 1;
Debut_Index : Positive := I;
begin
while V_String.Char_At (Trame, I) /= Car loop
V_String.Copy (Champs, V_String.Extract (Trame, Debut_Index, I));
I := I + 1;
end loop;
I := I + 1;
end Get;
procedure Value (Trame_In : Byte_Defs.Byte_String; O : out Objet) is
I : Positive := Longueur_Entete + 1;
Champs1, Champs2, Champs3, Champs4, Champs5 : V_String.Variable_String;
Trame : V_String.Variable_String;
begin
Trame := V_String.Value (Utils.Byte_String_To_String (Trame_In));
Get (Trame, I, Champs1, '%');
O.Destinataire := Integer'Value (V_String.Image (Champs1));
Get (Trame, I, Champs2, '%');
O.Expediteur := Integer'Value (V_String.Image (Champs2));
Get (Trame, I, Champs3, '%');
O.Ordre := Integer'Value (V_String.Image (Champs3));
Get (Trame, I, Champs4, '%');
O.Typ := Type_Message'Value (V_String.Image (Champs4));
Get (Trame, I, Champs5, '%');
O.Donnee := Champs5;
end Value;
procedure Emission (O : Objet;
Connection_Emission : Transport.Connection_Id;
Connection_Reception : Transport.Connection_Id) is
begin
Communication.Emission
(Image (O), Connection_Emission, Connection_Reception);
end Emission;
procedure Emission_Orb (O : Objet;
Connection : Transport.Connection_Id;
Socket : Transport_Defs.Socket_Id;
Host : Transport_Defs.Host_Id) is
use Byte_Defs;
begin
Communication.Emission_Orb (Image (O), Connection, Socket, Host);
end Emission_Orb;
procedure Copy (Source : Objet; Target : in out Objet) is
begin
Target.Destinataire := Source.Destinataire;
Target.Expediteur := Source.Expediteur;
Target.Ordre := Source.Ordre;
Target.Typ := Source.Typ;
V_String.Copy (Target.Donnee, Source.Donnee);
end Copy;
procedure Reception (O : in out Objet;
Connection : Transport.Connection_Id) is
Trame : Byte_Defs.Byte_String (1 .. 256);
O1 : Objet;
begin
Communication.Reception (Trame, Connection);
Value (Trame, O1);
Copy (O1, O);
end Reception;
procedure Reception_Orb (O : out Objet;
Connection : Transport.Connection_Id;
Socket : out Transport_Defs.Socket_Id;
Host : out Transport_Defs.Host_Id) is
Trame : Byte_Defs.Byte_String (1 .. 256);
begin
Communication.Reception_Orb (Trame, Connection, Socket, Host);
Value (Trame, O);
end Reception_Orb;
function Consulter_Destinataire (O : Objet) return Integer is
begin
return O.Destinataire;
end Consulter_Destinataire;
function Consulter_Expediteur (O : Objet) return Integer is
begin
return O.Expediteur;
end Consulter_Expediteur;
function Consulter_Ordre (O : Objet) return Integer is
begin
return O.Ordre;
end Consulter_Ordre;
function Consulter_Typ (O : Objet) return Type_Message is
begin
return O.Typ;
end Consulter_Typ;
function Consulter_Donnee (O : Objet) return V_String.Variable_String is
begin
return O.Donnee;
end Consulter_Donnee;
procedure Modifier_Destinataire (O : in out Objet; D : Integer) is
begin
O.Destinataire := D;
end Modifier_Destinataire;
procedure Modifier_Expediteur (O : in out Objet; E : Integer) is
begin
O.Expediteur := E;
end Modifier_Expediteur;
procedure Modifier_Ordre (O : in out Objet; R : Integer) is
begin
O.Ordre := R;
end Modifier_Ordre;
procedure Incrementer_Ordre (O : in out Objet) is
begin
O.Ordre := O.Ordre + 1;
end Incrementer_Ordre;
procedure Modifier_Typ (O : in out Objet; T : Type_Message) is
begin
O.Typ := T;
end Modifier_Typ;
procedure Modifier_Donnee (O : in out Objet;
D : V_String.Variable_String) is
begin
O.Donnee := D;
end Modifier_Donnee;
end Message;
nblk1=a
nid=6
hdr6=10
[0x00] rec0=21 rec1=00 rec2=01 rec3=010
[0x01] rec0=17 rec1=00 rec2=09 rec3=064
[0x02] rec0=1a rec1=00 rec2=0a rec3=084
[0x03] rec0=16 rec1=00 rec2=07 rec3=024
[0x04] rec0=13 rec1=00 rec2=02 rec3=02c
[0x05] rec0=1e rec1=00 rec2=03 rec3=038
[0x06] rec0=24 rec1=00 rec2=04 rec3=012
[0x07] rec0=11 rec1=00 rec2=08 rec3=000
[0x08] rec0=11 rec1=00 rec2=08 rec3=000
[0x09] rec0=30 rec1=00 rec2=20 rec3=000
tail 0x21762ea3887c492c8dee8 0x42a00088462060003
Free Block Chain:
0x6: 0000 00 05 02 1a 80 08 6d 65 5f 49 6e 29 29 3b 08 00 ┆ me_In)); ┆
0x5: 0000 00 00 00 84 80 11 6e 67 5f 54 6f 5f 42 79 74 65 ┆ ng_To_Byte┆