|
|
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: 19456 (0x4c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Frame_Defs, seg_055deb
└─⟦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 Text_Io;
with Utils;
with Host_Id_Io;
with Transport_Defs;
package body Frame_Defs is
Separator : constant Byte_Defs.Byte := 16#FF#;
procedure Cut_Frame (The_Data : Communication_Data;
Position : in out Positive;
The_Var_Str : out V_String.Variable_String) is
I : Positive := Position;
begin
while not (Byte_Defs."=" (The_Data (I), Separator)) loop
I := I + 1;
end loop;
The_Var_Str := V_String.Value (Utils.Byte_String_To_String
(The_Data (Position .. I - 1)));
Position := I + 1;
end Cut_Frame;
procedure Cut_Frame (The_Data : Communication_Data;
Position : in out Positive;
The_Byte_String : out Byte_Defs.Byte_String) is
I : Positive := Position;
begin
while not (Byte_Defs."=" (The_Data (I), Separator)) loop
I := I + 1;
end loop;
The_Byte_String := The_Data (Position .. I - 1);
Position := I + 1;
end Cut_Frame;
procedure Cut_Frame (The_Data : Communication_Data;
Position : in out Positive;
The_Nat : out Natural) is
I : Positive := Position;
begin
while not (Byte_Defs."=" (The_Data (I), Separator)) loop
I := I + 1;
end loop;
The_Nat := Natural'Value (Utils.Byte_String_To_String
(The_Data (Position .. I - 1)));
Position := I + 1;
end Cut_Frame;
function Image (The_Frame : Frame) return String is
The_Str_Separator : String (1 .. 1) :=
Utils.Byte_String_To_String
(Byte_Defs.Byte_String'(1 .. 1 => Separator));
begin
return V_String.Image (The_Frame.Nom_Exp) & The_Str_Separator &
Utils.Byte_String_To_String
(Byte_Defs.Byte_String (The_Frame.Dest_Socket)) &
The_Str_Separator & Host_Id_Io.Image (The_Frame.Dest_Host) &
The_Str_Separator &
Utils.Byte_String_To_String
(Byte_Defs.Byte_String (The_Frame.Exp_Socket)) &
The_Str_Separator &
Host_Id_Io.Image (The_Frame.Exp_Host) &
The_Str_Separator &
Natural'Image (The_Frame.Phase) &
The_Str_Separator &
Natural'Image (The_Frame.Message_Number) &
The_Str_Separator &
V_String.Image (The_Frame.Service_Kind) &
The_Str_Separator &
V_String.Image (The_Frame.Service) &
The_Str_Separator &
V_String.Image (The_Frame.Message) & The_Str_Separator;
end Image;
procedure Init_Frame (Nom_Exp : String;
Dest_Socket : Orb_Defs.Socket_Id;
Dest_Host : Orb_Defs.Host_Id;
Exp_Socket : Orb_Defs.Socket_Id;
Exp_Host : Orb_Defs.Host_Id;
Phase : Natural;
Message_Number : Natural;
Service_Kind, Service, Message : String;
The_Frame : out Frame) is
begin
The_Frame.Nom_Exp := V_String.Value (Nom_Exp);
The_Frame.Dest_Socket := Dest_Socket;
The_Frame.Dest_Host := Dest_Host;
The_Frame.Exp_Socket := Exp_Socket;
The_Frame.Exp_Host := Exp_Host;
The_Frame.Phase := Phase;
The_Frame.Message_Number := Message_Number;
The_Frame.Service_Kind := V_String.Value (Service_Kind);
The_Frame.Service := V_String.Value (Service);
The_Frame.Message := V_String.Value (Message);
end Init_Frame;
function Init_Frame
(Nom_Exp : String;
Dest_Socket : Orb_Defs.Socket_Id;
Dest_Host : Orb_Defs.Host_Id;
Exp_Socket : Orb_Defs.Socket_Id;
Exp_Host : Orb_Defs.Host_Id;
Phase : Natural;
Message_Number : Natural;
Service_Kind, Service, Message : String) return Frame is
Tmp_Frame : Frame;
begin
Init_Frame (Nom_Exp, Dest_Socket, Dest_Host, Exp_Socket,
Exp_Host, Phase, Message_Number,
Service_Kind, Service, Message, Tmp_Frame);
return Tmp_Frame;
end Init_Frame;
procedure Set_Frame (The_Data : Communication_Data;
The_Frame : out Frame) is
Position : Positive := The_Data'First;
begin
Cut_Frame (The_Data, Position, The_Frame.Nom_Exp);
Cut_Frame (The_Data, Position,
Byte_Defs.Byte_String (The_Frame.Dest_Socket));
Cut_Frame (The_Data, Position,
Byte_Defs.Byte_String (The_Frame.Dest_Host));
Cut_Frame (The_Data, Position,
Byte_Defs.Byte_String (The_Frame.Exp_Socket));
Cut_Frame (The_Data, Position,
Byte_Defs.Byte_String (The_Frame.Exp_Host));
Cut_Frame (The_Data, Position, The_Frame.Phase);
Cut_Frame (The_Data, Position, The_Frame.Message_Number);
Cut_Frame (The_Data, Position, The_Frame.Service_Kind);
Cut_Frame (The_Data, Position, The_Frame.Service);
Cut_Frame (The_Data, Position, The_Frame.Message);
end Set_Frame;
procedure Get_Frame (The_Frame : in Frame;
The_Byte_String : out Communication_Data) is
Max : Positive := 256;
Len : Positive := 22 + V_String.Length (The_Frame.Nom_Exp) +
Natural'Image (The_Frame.Phase)'Length +
Natural'Image (The_Frame.Message_Number)'Length +
V_String.Length (The_Frame.Service_Kind) +
V_String.Length (The_Frame.Service) +
V_String.Length (The_Frame.Message);
Fin_Trame : Byte_Defs.Byte_String (Len + 1 .. Max) :=
Byte_Defs.Byte_String'(Len + 1 .. Max => 0);
use Byte_Defs;
begin
The_Byte_String :=
Utils.String_To_Byte_String (V_String.Image (The_Frame.Nom_Exp)) &
Separator & Byte_String (The_Frame.Dest_Socket) &
Separator & Byte_String (The_Frame.Dest_Host) &
Separator & Byte_String (The_Frame.Exp_Socket) &
Separator & Byte_String (The_Frame.Exp_Host) & Separator &
Utils.String_To_Byte_String (Natural'Image (The_Frame.Phase)) &
Separator & Utils.String_To_Byte_String
(Natural'Image (The_Frame.Message_Number)) &
Separator & Utils.String_To_Byte_String
(V_String.Image (The_Frame.Service_Kind)) &
Separator & Utils.String_To_Byte_String
(V_String.Image (The_Frame.Service)) & Separator &
Utils.String_To_Byte_String
(V_String.Image (The_Frame.Message)) & Separator & Fin_Trame;
end Get_Frame;
procedure Set (The_String_Field : String_Field;
The_Str : String;
The_Frame : in out Frame) is
begin
case The_String_Field is
when Nom_Exp_Field =>
V_String.Free (The_Frame.Nom_Exp);
V_String.Copy (The_Frame.Nom_Exp, The_Str);
when Service_Kind_Field =>
V_String.Free (The_Frame.Service_Kind);
V_String.Copy (The_Frame.Service_Kind, The_Str);
when Service_Field =>
V_String.Free (The_Frame.Service);
V_String.Copy (The_Frame.Service, The_Str);
when Message_Field =>
V_String.Free (The_Frame.Message);
V_String.Copy (The_Frame.Message, The_Str);
end case;
end Set;
procedure Set (The_String_Field : String_Field;
The_Var_Str : in V_String.Variable_String;
The_Frame : in out Frame) is
begin
case The_String_Field is
when Nom_Exp_Field =>
V_String.Free (The_Frame.Nom_Exp);
V_String.Copy (The_Frame.Nom_Exp, The_Var_Str);
when Service_Kind_Field =>
V_String.Free (The_Frame.Service_Kind);
V_String.Copy (The_Frame.Service_Kind, The_Var_Str);
when Service_Field =>
V_String.Free (The_Frame.Service);
V_String.Copy (The_Frame.Service, The_Var_Str);
when Message_Field =>
V_String.Free (The_Frame.Message);
V_String.Copy (The_Frame.Message, The_Var_Str);
end case;
end Set;
procedure Set (The_Socket_Field : Socket_Field;
The_Var_Socket : in Orb_Defs.Socket_Id;
The_Frame : in out Frame) is
begin
case The_Socket_Field is
when Dest_Socket_Field =>
The_Frame.Dest_Socket := The_Var_Socket;
when Exp_Socket_Field =>
The_Frame.Exp_Socket := The_Var_Socket;
end case;
end Set;
procedure Set (The_Host_Field : Host_Field;
The_Var_Host : in Orb_Defs.Host_Id;
The_Frame : in out Frame) is
begin
case The_Host_Field is
when Dest_Host_Field =>
The_Frame.Dest_Host := The_Var_Host;
when Exp_Host_Field =>
The_Frame.Exp_Host := The_Var_Host;
end case;
end Set;
procedure Set (The_Natural_Field : Natural_Field;
The_Var_Nat : in Natural;
The_Frame : in out Frame) is
begin
case The_Natural_Field is
when Phase_Field =>
The_Frame.Phase := The_Var_Nat;
when Message_Number_Field =>
The_Frame.Message_Number := The_Var_Nat;
end case;
end Set;
procedure Get (The_String_Field : String_Field;
The_Frame : Frame;
The_Str : out String) is
begin
case The_String_Field is
when Nom_Exp_Field =>
The_Str := V_String.Extract (The_Frame.Nom_Exp, 1, 8);
when Service_Kind_Field =>
The_Str := V_String.Extract (The_Frame.Service_Kind, 1, 4);
when Service_Field =>
The_Str := V_String.Extract (The_Frame.Service, 1, 4);
when Message_Field =>
The_Str :=
V_String.Image (The_Frame.Message) &
String'(V_String.Length (The_Frame.Message) + 1 .. 256 =>
' ');
end case;
end Get;
procedure Get (The_String_Field : String_Field;
The_Frame : Frame;
The_Str : in out V_String.Variable_String) is
begin
case The_String_Field is
when Nom_Exp_Field =>
V_String.Copy (The_Str, V_String.Extract
(The_Frame.Nom_Exp, 1, 8));
when Service_Kind_Field =>
V_String.Copy (The_Str, V_String.Extract
(The_Frame.Service_Kind, 1, 4));
when Service_Field =>
V_String.Copy (The_Str, V_String.Extract
(The_Frame.Service, 1, 4));
when Message_Field =>
V_String.Copy (The_Str, The_Frame.Message);
end case;
end Get;
procedure Get (The_Socket_Field : Socket_Field;
The_Frame : Frame;
The_Socket_Id : out Orb_Defs.Socket_Id) is
begin
case The_Socket_Field is
when Dest_Socket_Field =>
The_Socket_Id := The_Frame.Dest_Socket;
when Exp_Socket_Field =>
The_Socket_Id := The_Frame.Exp_Socket;
end case;
end Get;
procedure Get (The_Host_Field : Host_Field;
The_Frame : Frame;
The_Host_Id : out Orb_Defs.Host_Id) is
begin
case The_Host_Field is
when Dest_Host_Field =>
The_Host_Id := The_Frame.Dest_Host;
when Exp_Host_Field =>
The_Host_Id := The_Frame.Exp_Host;
end case;
end Get;
procedure Get (The_Natural_Field : Natural_Field;
The_Frame : Frame;
The_Nat : out Natural) is
begin
case The_Natural_Field is
when Phase_Field =>
The_Nat := The_Frame.Phase;
when Message_Number_Field =>
The_Nat := The_Frame.Message_Number;
end case;
end Get;
end Frame_Defs;
nblk1=12
nid=3
hdr6=22
[0x00] rec0=22 rec1=00 rec2=01 rec3=048
[0x01] rec0=1b rec1=00 rec2=08 rec3=018
[0x02] rec0=16 rec1=00 rec2=0f rec3=03a
[0x03] rec0=08 rec1=00 rec2=02 rec3=02c
[0x04] rec0=18 rec1=00 rec2=0e rec3=01a
[0x05] rec0=11 rec1=00 rec2=04 rec3=060
[0x06] rec0=15 rec1=00 rec2=0a rec3=070
[0x07] rec0=11 rec1=00 rec2=0d rec3=070
[0x08] rec0=1c rec1=00 rec2=0c rec3=040
[0x09] rec0=17 rec1=00 rec2=12 rec3=014
[0x0a] rec0=01 rec1=00 rec2=07 rec3=018
[0x0b] rec0=1e rec1=00 rec2=06 rec3=046
[0x0c] rec0=19 rec1=00 rec2=0b rec3=09e
[0x0d] rec0=1a rec1=00 rec2=09 rec3=02e
[0x0e] rec0=01 rec1=00 rec2=11 rec3=04c
[0x0f] rec0=1f rec1=00 rec2=05 rec3=028
[0x10] rec0=06 rec1=00 rec2=10 rec3=000
[0x11] rec0=00 rec1=00 rec2=00 rec3=000
tail 0x21761355887c07ca7d22e 0x42a00088462060003
Free Block Chain:
0x3: 0000 00 00 00 15 80 03 73 65 3b 03 00 0c 20 20 20 20 ┆ se; ┆