|
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 Generic_Request_To_Orb, seg_056660
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Server_Object; with Channel_Operator_To_Bal; with Transport_Defs; with Answers_Array; with Bls_Constant; with Parametre; with Bounded_String; with Parametre_Defs; with Message; with Utils; with Byte_Defs; with Liste_Parametre; with Queue_Parametre; with Queue_Parametre_Utils; with My_Channel_User; with Channel_Operator; with Channel_Operator; with Task_Io; package body Generic_Request_To_Orb is Liaison_To_Orb : My_Channel_User.Object; Liaison_From_Orb : Channel_Operator.Object; Number : Parametre_Defs.Message_Number; This_Object : Parametre_Defs.Identificator; Local_Socket : Transport_Defs.Socket_Id (1 .. Bls_Constant.Size_Of_Our_Socket_Id); Local_Host : Transport_Defs.Host_Id (1 .. Bls_Constant.Size_Of_Address) := (193, 54, 146, 133); Class_Of_Object : Parametre.Variable_String; package The_Server is new Server_Object (Server_Work, Subscription_Treatement); function Subscription (Class : String; Object : Parametre_Defs.Identificator; Method : String) return Parametre_Defs.Message_Number is The_Class, The_Method : Parametre.Variable_String; Message_To_Orb : Message.Object; List_Containt : Liste_Parametre.List; begin Task_Io.Put_Line ("souscription aupres d'un objet."); Bounded_String.Copy (The_Class, Class); List_Containt := Liste_Parametre.Make (The_Class, List_Containt); Bounded_String.Copy (The_Method, Method); List_Containt := Liste_Parametre.Make (The_Method, List_Containt); Parametre_Defs.Increment (Number); Message.Create (Message_To_Orb, This_Object, Object, Parametre_Defs.Subsc, Number, List_Containt); Message.Send (Message_To_Orb, Liaison_To_Orb); return Number; end Subscription; procedure Get_Emet_Answer (The_Number : Parametre_Defs.Message_Number; Emet : out Parametre_Defs.Identificator; Out_Parametres : out Liste_Parametre.List) is begin Answers_Array.Get (Answers_Array.Index'Value (String (The_Number)), Emet, Out_Parametres); end Get_Emet_Answer; procedure Get_Answer (The_Number : Parametre_Defs.Message_Number; Out_Parametres : out Liste_Parametre.List) is begin Answers_Array.Get (Answers_Array.Index'Value (String (The_Number)), Out_Parametres); end Get_Answer; function Answer_Arrived (The_Number : Parametre_Defs.Message_Number) return Boolean is The_Number_Index : Answers_Array.Index; begin return Answers_Array.Is_Arrived (Answers_Array.Index'Value (String (The_Number))); end Answer_Arrived; procedure Init (Socket : Transport_Defs.Socket_Id; Host : Transport_Defs.Host_Id; Resultat : out Boolean) is Message_To_Orb : Message.Object; Contenu_Message : Liste_Parametre.List; Resultat_Intermediaire, Resultat_Intermediaire_2 : Boolean; Byte_String_Temp : Byte_Defs.Byte_String (1 .. 6); begin This_Object := Parametre_Defs.Unknown_Object; Channel_Operator.Init (O => Liaison_From_Orb, Result => Resultat_Intermediaire); Local_Socket := Channel_Operator.Get_Socket_Id (Liaison_From_Orb); Local_Host := Channel_Operator.Get_Host_Id (Liaison_From_Orb); My_Channel_User.Init (Liaison_To_Orb, Socket, Host, Resultat_Intermediaire_2); Byte_String_Temp (1 .. Bls_Constant.Size_Of_Our_Socket_Id) := Byte_Defs.Byte_String (Local_Socket (1 .. Bls_Constant.Size_Of_Our_Socket_Id)); Byte_String_Temp (1 + Bls_Constant.Size_Of_Our_Socket_Id .. Bls_Constant.Size_Of_Our_Socket_Id + Bls_Constant.Size_Of_Address) := Byte_Defs.Byte_String (Local_Host (1 .. Bls_Constant.Size_Of_Address)); This_Object := Parametre_Defs.Identificator (Byte_String_Temp); Resultat := Resultat_Intermediaire_2 and Resultat_Intermediaire; end Init; function Request (Class : String; Method : String; In_Parametres : Queue_Parametre.Queue; Object : Parametre_Defs.Identificator := Parametre_Defs.Orb) return Parametre_Defs.Message_Number is My_Method : Parametre.Variable_String; My_Class : Parametre.Variable_String; List_Containt : Liste_Parametre.List; Iter : Queue_Parametre.Iterator; Message_To_Orb : Message.Object; begin Task_Io.Put_Line ("demande d'une requete"); Bounded_String.Copy (My_Class, Class); List_Containt := Liste_Parametre.Make (My_Class, List_Containt); Bounded_String.Copy (My_Method, Method); List_Containt := Liste_Parametre.Make (My_Method, List_Containt); Parametre_Defs.Increment (Number); if Queue_Parametre.Is_Empty (In_Parametres) = False then List_Containt := Queue_Parametre_Utils.Add_Queue_To_List (List_Containt, In_Parametres); end if; Parametre_Defs.Increment (Number); Message.Create (Message_To_Orb, This_Object, Object, Parametre_Defs.Reque, Number, List_Containt); Message.Send (Message_To_Orb, Liaison_To_Orb); return Number; end Request; procedure Unpublication (Method : String) is Message_To_Orb : Message.Object; Method_Name : Liste_Parametre.List; begin Task_Io.Put_Line ("retrait d'une methode aupres de l'orb"); Parametre_Defs.Increment (Number); Method_Name := Liste_Parametre.Make (Class_Of_Object, Method_Name); Method_Name := Liste_Parametre.Make (Parametre.Value (Method), Method_Name); Message.Create (Message_To_Orb, This_Object, Parametre_Defs.Orb, Parametre_Defs.Unpub, Number, Method_Name); Message.Send (Message_To_Orb, Liaison_To_Orb); end Unpublication; procedure Publication (Method : String; In_Parametres : Queue_Parametre.Queue; Out_Parametres : Queue_Parametre.Queue) is Message_To_Orb : Message.Object; Method_Definition : Liste_Parametre.List; String_Method : Parametre.Variable_String; String_Method1 : Parametre.Variable_String; In_Parametre_Number : Natural := 0; Out_Parametre_Number : Natural := 0; Iter : Queue_Parametre.Iterator; Iterat : Liste_Parametre.Iterator; begin Task_Io.Put_Line ("publication d'une methode"); Method_Definition := Liste_Parametre.Make (Class_Of_Object, Method_Definition); Method_Definition := Liste_Parametre.Make (Parametre.Value (Method), Method_Definition); Bounded_String.Copy (String_Method, Natural'Image (Queue_Parametre_Utils.Length (In_Parametres))); Method_Definition := Liste_Parametre.Make (String_Method, Method_Definition); Method_Definition := Queue_Parametre_Utils.Add_Queue_To_List (Method_Definition, In_Parametres); Bounded_String.Copy (String_Method, Natural'Image (Queue_Parametre_Utils.Length (Out_Parametres))); Method_Definition := Liste_Parametre.Make (String_Method, Method_Definition); Method_Definition := Queue_Parametre_Utils.Add_Queue_To_List (Method_Definition, Out_Parametres); Parametre_Defs.Increment (Number); Message.Create (Message_To_Orb, This_Object, Parametre_Defs.Orb, Parametre_Defs.Publi, Number, Method_Definition); Message.Send (Message_To_Orb, Liaison_To_Orb); Liste_Parametre.Free (Method_Definition); end Publication; procedure Registration (Class : String) is Message_To_Orb, Message_From_Orb : Message.Object; Class_Definition : Liste_Parametre.List; String_Socket : Parametre.Variable_String; String_Host : Parametre.Variable_String; List_My_Identificator : Liste_Parametre.List; Iter : Liste_Parametre.Iterator; Reponse : Boolean; Resultat : Boolean; begin Task_Io.Put_Line ("enregistrement aupres de l'orb"); Bounded_String.Copy (Class_Of_Object, Class); Class_Definition := Liste_Parametre.Make (Parametre.Value (Class), Class_Definition); Parametre_Defs.Init (Number); Message.Create (Message_To_Orb, This_Object, Parametre_Defs.Orb, Parametre_Defs.Regis, Number, Class_Definition); Message.Send (Message_To_Orb, Liaison_To_Orb); Liste_Parametre.Free (Class_Definition); loop Message.Receive (Message_From_Orb, Liaison_From_Orb, Resultat); Task_Io.Put_Line ("."); exit when Resultat = True; end loop; if Parametre_Defs.Message_Type'Pos (Message.Get_Type (Message_From_Orb)) /= Parametre_Defs.Message_Type'Pos (Parametre_Defs.Regis) then Task_Io.Put_Line ("erreur de registration"); else This_Object := Message.Get_Dest (Message_From_Orb); end if; Channel_Operator_To_Bal.Init (Liaison_From_Orb); end Registration; procedure Unregistration is Message_To_Orb : Message.Object; Class_List : Liste_Parametre.List; begin Task_Io.Put_Line ("unregistration"); Parametre_Defs.Increment (Number); Class_List := Liste_Parametre.Make (Class_Of_Object, Class_List); Message.Create (Message_To_Orb, This_Object, Parametre_Defs.Orb, Parametre_Defs.Unreg, Number, Class_List); Message.Send (Message_To_Orb, Liaison_To_Orb); Channel_Operator_To_Bal.Dispose; end Unregistration; procedure Close is begin Channel_Operator.Close (Liaison_From_Orb); My_Channel_User.Close (Liaison_To_Orb); end Close; end Generic_Request_To_Orb;
nblk1=e nid=8 hdr6=18 [0x00] rec0=20 rec1=00 rec2=01 rec3=042 [0x01] rec0=15 rec1=00 rec2=0e rec3=02a [0x02] rec0=02 rec1=00 rec2=0a rec3=07c [0x03] rec0=18 rec1=00 rec2=0b rec3=018 [0x04] rec0=11 rec1=00 rec2=04 rec3=044 [0x05] rec0=16 rec1=00 rec2=03 rec3=020 [0x06] rec0=15 rec1=00 rec2=02 rec3=034 [0x07] rec0=16 rec1=00 rec2=0c rec3=00e [0x08] rec0=12 rec1=00 rec2=06 rec3=08c [0x09] rec0=16 rec1=00 rec2=05 rec3=012 [0x0a] rec0=14 rec1=00 rec2=07 rec3=010 [0x0b] rec0=1b rec1=00 rec2=09 rec3=000 [0x0c] rec0=1c rec1=00 rec2=09 rec3=02c [0x0d] rec0=01 rec1=00 rec2=0a rec3=000 tail 0x21762660a87c44cafcf30 0x42a00088462060003 Free Block Chain: 0x8: 0000 00 0d 03 fc 00 3f 20 20 20 20 62 65 67 69 6e 20 ┆ ? begin ┆ 0xd: 0000 00 00 00 0c 00 09 20 20 20 20 20 20 20 20 20 09 ┆ ┆