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