|
|
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: 15360 (0x3c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Messages, seg_055d38
└─⟦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 String_Utilities;
with Text_Io;
with Utils;
package body Messages is
package Type_Msg is new Text_Io.Enumeration_Io (Type_Message);
package Su renames String_Utilities;
package Bd renames Byte_Defs;
function Create (Typ : Type_Message;
Msg : V_Content;
Source : Natural;
Target : Natural;
Order : Natural) return Obj_Msg is
Obj : Obj_Msg;
begin
Obj := Obj_Msg'
(Type_Msg => Su.Number_To_String
(Value => Integer'(Type_Message'Pos (Typ)),
Base => 10,
Width => 2),
Source_Id => Su.Number_To_String
(Value => Source, Base => 10, Width => Tmax),
Target_Id => Su.Number_To_String
(Value => Target, Base => 10, Width => Tmax),
Msg_Order => Su.Number_To_String
(Value => Order, Base => 10, Width => Tmax),
Socket => Orb_Socket,
Name => Ficus,
Content => Msg,
Packet => V_Packet (Bs.Value ("", Pmax)));
return Obj;
end Create;
function Image (Obj : Obj_Msg) return V_Packet is
Content : String (1 .. Bs.Length (Bs.Variable_String (Obj.Content)));
Str_Msg : String
(1 .. Bs.Length (Bs.Variable_String (Obj.Content)) + Sfix);
V_Pack : V_Packet;
begin
Content := Bs.Image (Bs.Variable_String (Obj.Content));
Str_Msg := Obj.Type_Msg & Obj.Source_Id &
Obj.Target_Id & Obj.Msg_Order & "123456" &
Bs.Image (Bs.Variable_String (Obj.Content));
Bs.Copy (Bs.Variable_String (V_Pack), Str_Msg);
return V_Pack;
end Image;
procedure Packaging (Typ : Type_Message;
Content : V_Content := V_Null;
Source : Natural := 0;
Target : Natural := 0;
Order : Natural := 0;
Pack : in out V_Packet) is
Obj : Obj_Msg;
begin
Obj := Create (Typ, Content, Source, Target, Order);
Bs.Copy (Target => Bs.Variable_String (Pack),
Source => Bs.Variable_String (Image (Obj)));
exception
when Constraint_Error =>
Text_Io.Put_Line ("** Exception dans messages.packaging **");
end Packaging;
procedure Unpackaging (Msg : Byte_Defs.Byte_String;
Nb : Positive;
Record_Msg : in out Obj_Msg) is
Str_Msg : constant String := Utils.Byte_String_To_String (Msg);
V_Msg : constant Bounded_String.Variable_String :=
Bs.Value (Str_Msg, Pmax);
V_Content : constant Bs.Variable_String :=
Bs.Value (Bs.Extract (V_Msg, 18, Natural (Nb)), Mmax);
begin
Record_Msg.Type_Msg :=
Su.Number_To_String
(Value => Integer'(Type_Message'Pos (Get_Type_Msg (Str_Msg))),
Base => 10,
Width => 2);
Record_Msg.Source_Id :=
Su.Number_To_String
(Value => Get_Source_Id (Str_Msg), Base => 10, Width => Tmax);
Record_Msg.Target_Id :=
Su.Number_To_String
(Value => Get_Target_Id (Str_Msg), Base => 10, Width => Tmax);
Record_Msg.Msg_Order :=
Su.Number_To_String
(Value => Get_Order_Msg (Str_Msg), Base => 10, Width => Tmax);
Record_Msg.Socket := Get_Client_Socket (Msg);
Record_Msg.Name := Get_Client_Host (Msg);
Bs.Copy (Bs.Variable_String (Record_Msg.Content), V_Content);
end Unpackaging;
function Get_Type_Msg (From : String) return Type_Message is
V_Msg : V_Packet := V_Packet (Bs.Value (From, Pmax));
Str_Typ : String (1 .. 2);
Worked : Boolean;
N : Integer;
begin
Str_Typ := Bs.Extract (Source => Bs.Variable_String (V_Msg),
Start_Pos => 1,
End_Pos => 2);
Su.String_To_Number (Str_Typ, N, Worked);
return Type_Message'Val (N);
end Get_Type_Msg;
function Get_Type_Str_Msg (From : String) return String is
V_Msg : V_Packet := V_Packet (Bs.Value (From, Pmax));
Nb : Positive;
Enum_Typ : Type_Message;
begin
return Bs.Extract (Source => Bs.Variable_String (V_Msg),
Start_Pos => 1,
End_Pos => 2);
end Get_Type_Str_Msg;
function Get_Source_Id (From : String) return Natural is
V_Source : V_Packet := V_Packet (Bs.Value (From, Pmax));
begin
return Natural'Value
(Bs.Extract (Source => Bs.Variable_String (V_Source),
Start_Pos => 3,
End_Pos => 5));
end Get_Source_Id;
function Get_Target_Id (From : String) return Natural is
V_Target : V_Packet := V_Packet (Bs.Value (From, Pmax));
begin
return Natural'Value
(Bs.Extract (Source => Bs.Variable_String (V_Target),
Start_Pos => 6,
End_Pos => 8));
end Get_Target_Id;
function Get_Order_Msg (From : String) return Natural is
V_Order : V_Packet := V_Packet (Bs.Value (From, Pmax));
begin
return Natural'Value
(Bs.Extract (Source => Bs.Variable_String (V_Order),
Start_Pos => 9,
End_Pos => 11));
end Get_Order_Msg;
function Get_Client_Socket (From : Byte_Defs.Byte_String) return T_Socket is
begin
return T_Socket (From (11 .. 12));
end Get_Client_Socket;
function Get_Client_Host (From : Byte_Defs.Byte_String) return T_Host_Id is
begin
return T_Host_Id (From (13 .. 16));
end Get_Client_Host;
function Get_Content_Msg (From : String) return String is
V_Content : V_Packet := V_Packet (Bs.Value (From, Pmax));
Str : constant String :=
Bs.Extract ((Bs.Variable_String (V_Content)), 18, From'Last);
begin
return Str;
end Get_Content_Msg;
procedure Watch_Pack (V_Str : V_Packet) is
begin
Text_Io.Put_Line ("type : " &
Get_Type_Str_Msg (Bs.Image
(Bs.Variable_String (V_Str))));
Text_Io.Put_Line
("source : " &
Integer'Image (Get_Source_Id
(Bs.Image (Bs.Variable_String (V_Str)))));
Text_Io.Put_Line
("target : " &
Integer'Image (Get_Target_Id
(Bs.Image (Bs.Variable_String (V_Str)))));
Text_Io.Put_Line
("order : " &
Integer'Image (Get_Order_Msg
(Bs.Image (Bs.Variable_String (V_Str)))));
end Watch_Pack;
function Get_Type_Msg (From : Obj_Msg) return Type_Message is
N : Integer;
Worked : Boolean;
begin
Su.String_To_Number (From.Type_Msg, N, Worked);
return Type_Message'Val (N);
end Get_Type_Msg;
function Get_Source_Id (From : Obj_Msg) return Natural is
N : Integer;
Flag : Boolean;
begin
Su.String_To_Number
(Source => From.Source_Id, Target => N, Worked => Flag);
if not (Flag) then
Text_Io.Put_Line (" ! String_To_Number Error !");
end if;
return Natural (N);
end Get_Source_Id;
function Get_Target_Id (From : Obj_Msg) return Natural is
N : Integer;
Flag : Boolean;
begin
Su.String_To_Number
(Source => From.Target_Id, Target => N, Worked => Flag);
if not Flag then
Text_Io.Put_Line (" ! String_To_Number Error !");
end if;
return Natural (N);
end Get_Target_Id;
function Get_Order_Msg (From : Obj_Msg) return Natural is
N : Integer;
Flag : Boolean;
begin
Su.String_To_Number
(Source => From.Msg_Order, Target => N, Worked => Flag);
if not Flag then
Text_Io.Put_Line (" ! String_To_Number Error !");
end if;
return Natural (N);
end Get_Order_Msg;
function Get_Client_Socket (From : Obj_Msg) return T_Socket is
begin
return From.Socket;
end Get_Client_Socket;
function Get_Client_Host (From : Obj_Msg) return T_Host_Id is
begin
return From.Name;
end Get_Client_Host;
function Get_Content (From : Obj_Msg) return V_Content is
begin
return From.Content;
end Get_Content;
procedure Put_Type_Msg (To : in out Obj_Msg; Item : Type_Message) is
begin
To.Type_Msg :=
Su.Number_To_String (Value => Integer'(Type_Message'Pos (Item)),
Base => 10,
Width => Dmax);
end Put_Type_Msg;
procedure Put_Source_Id (To : in out Obj_Msg; Item : Natural) is
begin
To.Source_Id := Su.Number_To_String
(Value => Item, Base => 10, Width => Tmax);
end Put_Source_Id;
procedure Put_Target_Id (To : in out Obj_Msg; Item : Natural) is
begin
To.Target_Id := Su.Number_To_String
(Value => Item, Base => 10, Width => Tmax);
end Put_Target_Id;
procedure Put_Order_Msg (To : in out Obj_Msg; Item : Natural) is
begin
To.Msg_Order := Su.Number_To_String
(Value => Item, Base => 10, Width => Tmax);
end Put_Order_Msg;
procedure Put_Client_Socket (To : in out Obj_Msg; Item : T_Socket) is
begin
To.Socket := Item;
end Put_Client_Socket;
procedure Put_Client_Host (To : in out Obj_Msg; Item : T_Host_Id) is
begin
To.Name := Item;
end Put_Client_Host;
procedure Put_Content (To : in out Obj_Msg; Item : String) is
begin
Bs.Copy (Bs.Variable_String (To.Content), Bs.Value (Item, Pmax));
end Put_Content;
end Messages;
nblk1=e
nid=c
hdr6=1a
[0x00] rec0=1b rec1=00 rec2=01 rec3=05e
[0x01] rec0=16 rec1=00 rec2=0a rec3=01c
[0x02] rec0=16 rec1=00 rec2=08 rec3=06e
[0x03] rec0=16 rec1=00 rec2=09 rec3=054
[0x04] rec0=18 rec1=00 rec2=05 rec3=05c
[0x05] rec0=01 rec1=00 rec2=03 rec3=050
[0x06] rec0=1b rec1=00 rec2=06 rec3=010
[0x07] rec0=1b rec1=00 rec2=0b rec3=024
[0x08] rec0=18 rec1=00 rec2=07 rec3=04c
[0x09] rec0=1f rec1=00 rec2=0d rec3=016
[0x0a] rec0=1f rec1=00 rec2=0e rec3=034
[0x0b] rec0=1a rec1=00 rec2=02 rec3=000
[0x0c] rec0=0e rec1=00 rec2=04 rec3=000
[0x0d] rec0=14 rec1=00 rec2=04 rec3=000
tail 0x217610d0e87c06c3bee08 0x42a00088462060003
Free Block Chain:
0xc: 0000 00 00 00 16 80 13 20 20 20 20 20 20 20 20 20 42 ┆ B┆