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