|
|
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: 72704 (0x11c00)
Types: Ada Source
Notes: 03_class, FILE, Long Ada Source, R1k_Segment, e3_tag, package body Master_Orb, seg_056fd0
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with My_Set_Of_Adress, Set_Of_Fil_Observ;
with All_String, Set_Method;
with T_Message, T_Status;
with Constant_Start_End;
with Com_Defs, The_Contrats;
with Conversion, Text_Manager;
package body Master_Orb is
task body Object_Request_Broker is
My_Contrat : The_Contrats.Set_Of_Objects.Set;
My_Method_Array : Set_Method.Method_Array;
My_Contrat_Iterator : The_Contrats.Contrat_Iterator;
My_Contrat_Array : The_Contrats.Contrat_Array;
Local_Contrat : The_Contrats.Contrat;
Set_Of_Client : My_Set_Of_Adress.Set_Of_Adress.Set;
Set_Of_Server : My_Set_Of_Adress.Set_Of_Adress.Set;
Set_Of_Filter : Set_Of_Fil_Observ.My_Set_Of_Fil_Ob.Set;
Set_Of_Observer : Set_Of_Fil_Observ.My_Set_Of_Fil_Ob.Set;
My_Receive_Frame : The_Message.T_Frame;
My_Send_Frame : The_Message.T_Frame;
My_Status : Boolean := False;
Status : Boolean := False;
Status1 : Boolean := False;
My_Appli_Number : Com_Defs.Com_Number := 0;
My_Quest_Number : Com_Defs.Com_Number := 0;
Orb_Appli_Number : Com_Defs.Com_Number := 0;
My_Data_To_Send : Com_Defs.V_String;
My_Receive_Data : Com_Defs.V_String;
My_Adress_String_And_Apply_Number, My_Adress_String_And_Apply_Number1,
My_Adress_String_And_Apply_Number2, My_Adress_String_And_Apply_Number3 :
All_String.Adress_String_And_Apply_Number;
Orb_Adress : constant All_String.Adress_String_And_Apply_Number :=
"0000000000000000";
My_Adress_String : All_String.Adress_String;
My_Internet_Adress, My_Host_Name, My_Source_Apply_Number, My_Specif :
Com_Defs.V_String;
My_Frame_Length : Natural;
My_Integer_Type_Of_Message : Integer;
My_Integer_Type_Of_Status : Integer;
My_Type_Of_Message : T_Message.T_Mess;
My_Type_Of_Status : T_Status.T_State;
My_Data_Iterator : The_Message.Data_Iterator;
The_Class_Name, The_Object_Name, The_Method_Name,
The_Parameters, The_Number_Of_Parameter : Com_Defs.V_String;
procedure Error is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Error");
The_Message.Init_Data (My_Data_Iterator, My_Receive_Frame);
The_Message.Next_Data (My_Data_Iterator);
My_Receive_Data := The_Message.Value_Data (My_Data_Iterator);
Text_Manager.Text.Put_Line ("Orb : The error message is : " &
Com_Defs.Image (My_Receive_Data));
end Error;
procedure Registration is
begin
The_Message.Init_Data (My_Data_Iterator, My_Receive_Frame);
The_Message.Next_Data (My_Data_Iterator);
My_Host_Name := The_Message.Value_Data (My_Data_Iterator);
My_Source_Apply_Number :=
The_Message.Value (The_Message.Read_Source_Apply_Number
(My_Receive_Frame));
case My_Integer_Type_Of_Status is
when T_Status.T_State'Pos (T_Status.Client_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : a client was registred");
My_Set_Of_Adress.Add_To
(This_Set => Set_Of_Client,
This_Adress => My_Adress_String_And_Apply_Number,
This_Machine => My_Host_Name,
This_Appli_Number => My_Source_Apply_Number);
if My_Set_Of_Adress.Contains_This_Adress
(Set_Of_Client,
My_Adress_String_And_Apply_Number) then
Text_Manager.Text.Put_Line
("ORB : add client is OK");
else
Text_Manager.Text.Put_Line
("ORB : add client isn't OK");
end if;
end;
when T_Status.T_State'Pos (T_Status.Server_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : a server was registred");
My_Set_Of_Adress.Add_To
(This_Set => Set_Of_Server,
This_Adress => My_Adress_String_And_Apply_Number,
This_Machine => My_Host_Name,
This_Appli_Number => My_Source_Apply_Number);
if My_Set_Of_Adress.Contains_This_Adress
(Set_Of_Server,
My_Adress_String_And_Apply_Number) then
Text_Manager.Text.Put_Line
("ORB : add server is OK");
else
Text_Manager.Text.Put_Line
("ORB : add server isn't OK");
end if;
end;
when T_Status.T_State'Pos (T_Status.Filter_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : a filter was registred");
Set_Of_Fil_Observ.Add_To
(This_Set => Set_Of_Filter,
This_Adress => My_Adress_String_And_Apply_Number,
This_Machine => My_Host_Name,
This_Appli_Number => My_Source_Apply_Number);
if Set_Of_Fil_Observ.Contains_This_Adress
(Set_Of_Filter,
My_Adress_String_And_Apply_Number) then
Text_Manager.Text.Put_Line
("ORB : add filter is OK");
else
Text_Manager.Text.Put_Line
("ORB : add filter isn't OK");
end if;
end;
when T_Status.T_State'Pos (T_Status.Observer_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : an observer was registred");
Set_Of_Fil_Observ.Add_To
(This_Set => Set_Of_Observer,
This_Adress => My_Adress_String_And_Apply_Number,
This_Machine => My_Host_Name,
This_Appli_Number => My_Source_Apply_Number);
if Set_Of_Fil_Observ.Contains_This_Adress
(Set_Of_Observer,
My_Adress_String_And_Apply_Number) then
Text_Manager.Text.Put_Line
("ORB : add observer is OK");
else
Text_Manager.Text.Put_Line
("ORB : add observer isn't OK");
end if;
end;
when others =>
Text_Manager.Text.Put_Line
("ORB : Registration : type of status is unknown");
end case;
end Registration;
procedure Unregistration is
begin
case My_Integer_Type_Of_Status is
when T_Status.T_State'Pos (T_Status.Client_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : a client was unregistred");
My_Set_Of_Adress.Delete_To
(This_Set => Set_Of_Client,
This_Adress => My_Adress_String_And_Apply_Number);
end;
when T_Status.T_State'Pos (T_Status.Server_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : a server was unregistred");
My_Set_Of_Adress.Delete_To
(This_Set => Set_Of_Server,
This_Adress => My_Adress_String_And_Apply_Number);
end;
when T_Status.T_State'Pos (T_Status.Filter_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : a filter was unregistred");
Set_Of_Fil_Observ.Delete_To
(This_Set => Set_Of_Filter,
This_Adress => My_Adress_String_And_Apply_Number);
end;
when T_Status.T_State'Pos (T_Status.Observer_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : an observer was unregistred");
Set_Of_Fil_Observ.Delete_To
(This_Set => Set_Of_Observer,
This_Adress => My_Adress_String_And_Apply_Number);
end;
when others =>
Text_Manager.Text.Put_Line
("ORB : Unregistration : type of status is unknown");
end case;
end Unregistration;
procedure Query is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Query");
-- No treatment
end Query;
procedure Request_Method is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Request_Method");
My_Adress_String_And_Apply_Number1 :=
The_Message.Read_Source_Adress_Internet_And_Apply_Number
(My_Receive_Frame);
The_Message.Init_Data (My_Data_Iterator, My_Receive_Frame);
The_Message.Next_Data (My_Data_Iterator);
The_Class_Name := The_Message.Value_Data (My_Data_Iterator);
The_Message.Next_Data (My_Data_Iterator);
The_Object_Name := The_Message.Value_Data (My_Data_Iterator);
Text_Manager.Text.Put_Line ("ORB : Class_Name requested is : " &
Com_Defs.Image (The_Class_Name));
Text_Manager.Text.Put_Line ("ORB : Object_Name requested is : " &
Com_Defs.Image (The_Object_Name));
The_Message.Copy (My_Send_Frame, My_Receive_Frame);
The_Message.Exchange_Source_Destination (My_Send_Frame);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Client, My_Send_Frame);
The_Message.Remove_Data (My_Send_Frame);
My_Set_Of_Adress.Extract_The_Machine
(This_Set => Set_Of_Client,
This_Adress => My_Adress_String_And_Apply_Number1,
Answer_In => My_Host_Name);
My_Appli_Number := The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number1);
if The_Contrats.Find_This_Object
(My_Contrat, The_Class_Name, The_Object_Name) then
Text_Manager.Text.Put_Line ("ORB : Methods has been found");
The_Contrats.Extract_All_Methods
(My_Contrat, The_Class_Name,
The_Object_Name, My_Contrat_Array);
The_Contrats.Init (My_Contrat_Iterator, My_Contrat_Array);
The_Message.Init_Type_Of_Message
(T_Message.Response, My_Send_Frame);
while (not The_Contrats.Done (My_Contrat_Iterator)) loop
Local_Contrat := The_Contrats.Value (My_Contrat_Iterator);
-- Text_Manager.Text.Put_Line
-- ("Local_Contrat.class_name : " &
-- Com_Defs.Image (Local_Contrat.Class_Name));
-- Text_Manager.Text.Put_Line
-- ("Local_Contrat.object_name : " &
-- Com_Defs.Image (Local_Contrat.Object_Name));
-- Text_Manager.Text.Put_Line
-- ("Local_Contrat.method_name : " &
-- Com_Defs.Image (Local_Contrat.Method_Name));
-- Text_Manager.Text.Put_Line
-- ("Local_Contrat.parameter : " &
-- Com_Defs.Image (Local_Contrat.Parameter));
-- Text_Manager.Text.Put_Line
-- ("Local_Contrat.number : " &
-- Com_Defs.Image (Local_Contrat.Number));
The_Message.Init_Data_Message
(Local_Contrat.Class_Name, My_Send_Frame);
The_Message.Init_Data_Message
(The_Message.Value ("/"), My_Send_Frame);
The_Message.Init_Data_Message
(Local_Contrat.Object_Name, My_Send_Frame);
The_Message.Init_Data_Message
(The_Message.Value ("/"), My_Send_Frame);
The_Message.Init_Data_Message
(Local_Contrat.Method_Name, My_Send_Frame);
The_Message.Init_Data_Message
(The_Message.Value ("/"), My_Send_Frame);
The_Message.Init_Data_Message
(Local_Contrat.Number, My_Send_Frame);
The_Message.Init_Data_Message
(The_Message.Value ("/"), My_Send_Frame);
The_Message.Init_Data_Message
(Local_Contrat.Parameter, My_Send_Frame);
The_Contrats.Next (My_Contrat_Iterator);
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
end loop;
else
Text_Manager.Text.Put_Line ("ORB : Methods hasn't been found");
The_Message.Remove_Data (My_Send_Frame);
The_Message.Init_Type_Of_Message
(T_Message.Error, My_Send_Frame);
The_Message.Init_Data_Message
(Com_Defs.Value ("methods undisponible"), My_Send_Frame);
Text_Manager.Text.Put_Line ("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
end if;
end Request_Method;
procedure Request_Service is
begin
Text_Manager.Text.Put_Line ("Orb : Entry_Request_Service");
The_Message.Copy (My_Send_Frame, My_Receive_Frame);
case My_Integer_Type_Of_Status is
when T_Status.T_State'Pos (T_Status.Client_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : request_service from a client");
The_Message.Extract_The_Contract
(My_Frame => My_Receive_Frame,
My_Iter => My_Data_Iterator,
Class_Name => The_Class_Name,
Object_Name => The_Object_Name,
Method_Name => The_Method_Name,
Number_Of_Parameter => The_Number_Of_Parameter,
Parameters => The_Parameters);
The_Message.Remove_Data (My_Send_Frame);
if The_Contrats.Find_This_Object
(The_Contrat => My_Contrat,
With_This_Name_Class => The_Class_Name,
With_This_Object_Name => The_Object_Name,
With_This_Method_Name => The_Method_Name,
With_This_Parameter => The_Parameters,
With_This_Number => The_Number_Of_Parameter) then
The_Contrats.Extract_The_Adress
(My_Contrat,
From_This_Class => The_Class_Name,
With_This_Object_Name => The_Object_Name,
With_This_Method_Name => The_Method_Name,
With_This_Parameter => The_Parameters,
With_This_Number => The_Number_Of_Parameter,
Response_In =>
My_Adress_String_And_Apply_Number2);
-- ON RECHERCHE SI UN FILTRE EXISTE
Set_Of_Fil_Observ.Extract_The_Adress
(This_Set => Set_Of_Filter,
This_Specification => The_Object_Name,
Answer_In => My_Adress_String_And_Apply_Number3,
Is_Ok => Status1);
if Status1 then
Set_Of_Fil_Observ.Extract_The_Machine
(This_Set => Set_Of_Filter,
This_Adress =>
My_Adress_String_And_Apply_Number3,
Answer_In => My_Host_Name,
Is_Ok => Status);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Filter_Before_Server,
My_Send_Frame);
The_Message.Init_Source
(My_Adress_String_And_Apply_Number2,
My_Send_Frame);
The_Message.Init_Destinataire
(My_Adress_String_And_Apply_Number3,
My_Send_Frame);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number3);
Set_Of_Fil_Observ.Extract_The_Machine
(This_Set => Set_Of_Filter,
This_Adress =>
My_Adress_String_And_Apply_Number3,
Answer_In => My_Host_Name,
Is_Ok => Status);
else
-- PAS DE FILTRE
Text_Manager.Text.Put_Line
("ORB : Request_Service : no filter found");
-- RECHERCHE UN OBSERVER
Set_Of_Fil_Observ.Contains_This_Specification
(This_Set => Set_Of_Observer,
This_Specification => The_Object_Name,
The_Adress =>
My_Adress_String_And_Apply_Number3,
The_Status => Status);
if Status then
The_Message.Init_Source
(My_Adress_String_And_Apply_Number3,
My_Send_Frame);
-- Il existe un OBSERVER
else
The_Message.Init_Source
(Orb_Adress, My_Send_Frame);
end if;
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number2);
My_Set_Of_Adress.Extract_The_Machine
(This_Set => Set_Of_Server,
This_Adress =>
My_Adress_String_And_Apply_Number2,
Answer_In => My_Host_Name);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Server, My_Send_Frame);
The_Message.Init_Destinataire
(My_Adress_String_And_Apply_Number2,
My_Send_Frame);
The_Message.Remove_Data (My_Send_Frame);
end if;
else
Text_Manager.Text.Put_Line
("ORB : Contract hasn't been found");
My_Adress_String_And_Apply_Number1 :=
The_Message.
Read_Source_Adress_Internet_And_Apply_Number
(My_Send_Frame);
The_Message.Exchange_Source_Destination
(My_Send_Frame);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number1);
My_Set_Of_Adress.Extract_The_Machine
(This_Set => Set_Of_Client,
This_Adress =>
My_Adress_String_And_Apply_Number1,
Answer_In => My_Host_Name);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Client, My_Send_Frame);
The_Message.Init_Type_Of_Message
(T_Message.Error, My_Send_Frame);
The_Message.Init_Data_Message
(Com_Defs.Value ("server undisponible"),
My_Send_Frame);
end if;
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
end;
when others =>
Text_Manager.Text.Put_Line
("ORB : Request_Service : error dans case");
end case;
end Request_Service;
procedure Notification is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Notification");
The_Message.Init_Data (My_Data_Iterator, My_Receive_Frame);
The_Message.Next_Data (My_Data_Iterator);
My_Receive_Data := The_Message.Value_Data (My_Data_Iterator);
-- TRAITEMENT A AJOUTER
end Notification;
procedure Forward is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Forward");
The_Message.Init_Data (My_Data_Iterator, My_Receive_Frame);
The_Message.Next_Data (My_Data_Iterator);
The_Class_Name := The_Message.Value_Data (My_Data_Iterator);
-- TRAITEMENT A AJOUTER
end Forward;
procedure Publication is
begin
The_Message.Extract_The_Contract
(My_Frame => My_Receive_Frame,
My_Iter => My_Data_Iterator,
Class_Name => The_Class_Name,
Object_Name => The_Object_Name,
Method_Name => The_Method_Name,
Number_Of_Parameter => The_Number_Of_Parameter,
Parameters => The_Parameters);
The_Contrats.Add_A_Contrat
(My_Contrat,
With_This_Class_Name => The_Class_Name,
With_This_Object_Name => The_Object_Name,
With_This_Method_Name => The_Method_Name,
With_This_Parameter => The_Parameters,
With_This_Number => The_Number_Of_Parameter,
With_This_Adress => My_Adress_String_And_Apply_Number);
if The_Contrats.Find_This_Object
(My_Contrat,
With_This_Name_Class => The_Class_Name,
With_This_Object_Name => The_Object_Name,
With_This_Method_Name => The_Method_Name,
With_This_Parameter => The_Parameters,
With_This_Number => The_Number_Of_Parameter) then
Text_Manager.Text.Put_Line ("ORB : publication add is OK");
else
Text_Manager.Text.Put_Line ("ORB : publication add isn't OK");
end if;
end Publication;
procedure Unpublication is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Unpublication");
The_Message.Extract_The_Contract
(My_Frame => My_Receive_Frame,
My_Iter => My_Data_Iterator,
Class_Name => The_Class_Name,
Object_Name => The_Object_Name,
Method_Name => The_Method_Name,
Number_Of_Parameter => The_Number_Of_Parameter,
Parameters => The_Parameters);
The_Contrats.Delete_A_Contrat
(My_Contrat,
With_This_Class_Name => The_Class_Name,
With_This_Object_Name => The_Object_Name,
Which_Has_This_Adress => My_Adress_String_And_Apply_Number);
end Unpublication;
procedure Response is
Tampon : The_Message.T_Frame;
begin
Text_Manager.Text.Put_Line ("ORB : Entry_response");
The_Message.Copy (My_Send_Frame, My_Receive_Frame);
case My_Integer_Type_Of_Status is
when T_Status.T_State'Pos (T_Status.
Filter_To_Orb_Before_Server) =>
begin
Text_Manager.Text.Put_Line
("ORB : Response after the filter and before the server");
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Server, My_Send_Frame);
The_Message.Init_Type_Of_Message
(T_Message.Request_Service, My_Send_Frame);
My_Adress_String_And_Apply_Number1 :=
The_Message.
Read_Destinataire_Adress_Internet_And_Apply_Number
(My_Receive_Frame);
My_Set_Of_Adress.Extract_The_Machine
(This_Set => Set_Of_Server,
This_Adress => My_Adress_String_And_Apply_Number1,
Answer_In => My_Host_Name);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number1);
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
end;
when T_Status.T_State'Pos (T_Status.Server_To_Orb) =>
begin
Text_Manager.Text.Put_Line
("ORB : Response from a server");
My_Adress_String_And_Apply_Number3 :=
The_Message.
Read_Client_Adress_Internet_And_Apply_Number
(My_Receive_Frame);
My_Adress_String_And_Apply_Number2 :=
The_Message.
Read_Destinataire_Adress_Internet_And_Apply_Number
(My_Receive_Frame);
My_Adress_String_And_Apply_Number1 :=
The_Message.
Read_Source_Adress_Internet_And_Apply_Number
(My_Receive_Frame);
The_Message.Exchange_Source_Destination (My_Send_Frame);
if My_Adress_String_And_Apply_Number2 = Orb_Adress then
-- PAS DE FILTRE ni d'OBSERVER ASSOCIE
-- On envoie au client
The_Message.Init_Destinataire
(My_Adress_String_And_Apply_Number3,
My_Send_Frame);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Client, My_Send_Frame);
The_Message.Init_Type_Of_Message
(T_Message.Response, My_Send_Frame);
My_Set_Of_Adress.Extract_The_Machine
(This_Set => Set_Of_Client,
This_Adress =>
My_Adress_String_And_Apply_Number3,
Answer_In => My_Host_Name);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number3);
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
else
if Set_Of_Fil_Observ.Contains_This_Adress
(The_Set => Set_Of_Filter,
This_Adress =>
My_Adress_String_And_Apply_Number2) then
The_Message.Exchange_Source_Destination
(My_Send_Frame);
The_Message.Init_Source
(Orb_Adress, My_Send_Frame);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Filter_After_Server,
My_Send_Frame);
The_Message.Init_Type_Of_Message
(T_Message.Request_Service, My_Send_Frame);
Set_Of_Fil_Observ.Extract_The_Machine
(This_Set => Set_Of_Filter,
This_Adress =>
My_Adress_String_And_Apply_Number2,
Answer_In => My_Host_Name,
Is_Ok => Status);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number2);
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
else
The_Message.Init_Source
(Orb_Adress, My_Send_Frame);
The_Message.Init_Destinataire
(My_Adress_String_And_Apply_Number2,
My_Send_Frame);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Observer, My_Send_Frame);
The_Message.Init_Type_Of_Message
(T_Message.Request_Service, My_Send_Frame);
Set_Of_Fil_Observ.Extract_The_Machine
(This_Set => Set_Of_Observer,
This_Adress =>
My_Adress_String_And_Apply_Number2,
Answer_In => My_Host_Name,
Is_Ok => Status);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number2);
The_Message.Copy (Tampon, My_Send_Frame);
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Client, Tampon);
The_Message.Init_Source (Orb_Adress, Tampon);
The_Message.Init_Destinataire
(My_Adress_String_And_Apply_Number3, Tampon);
The_Message.Init_Type_Of_Message
(T_Message.Response, Tampon);
My_Set_Of_Adress.Extract_The_Machine
(This_Set => Set_Of_Client,
This_Adress =>
My_Adress_String_And_Apply_Number3,
Answer_In => My_Host_Name);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number3);
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (Tampon));
The_Message.Send (My_Appli_Number, My_Host_Name,
Tampon, My_Status);
end if;
end if;
end;
when T_Status.T_State'Pos (T_Status.
Filter_To_Orb_After_Server) =>
begin
Text_Manager.Text.Put_Line
("ORB : Response after the server and after the filter");
My_Adress_String_And_Apply_Number1 :=
The_Message.
Read_Source_Adress_Internet_And_Apply_Number
(My_Receive_Frame);
The_Message.Exchange_Source_Destination (My_Send_Frame);
Set_Of_Fil_Observ.Extract_The_Specification
(This_Set => Set_Of_Filter,
This_Adress => My_Adress_String_And_Apply_Number1,
Answer_In => My_Specif,
Is_Ok => Status);
Set_Of_Fil_Observ.Contains_This_Specification
(This_Set => Set_Of_Observer,
This_Specification => My_Specif,
The_Adress => My_Adress_String_And_Apply_Number2,
The_Status => Status);
if Status then
-- Il existe un OBSERVER
The_Message.Init_Destinataire
(My_Adress_String_And_Apply_Number2,
My_Send_Frame);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Observer, My_Send_Frame);
The_Message.Init_Type_Of_Message
(T_Message.Request_Service, My_Send_Frame);
Set_Of_Fil_Observ.Extract_The_Machine
(This_Set => Set_Of_Observer,
This_Adress =>
My_Adress_String_And_Apply_Number2,
Answer_In => My_Host_Name,
Is_Ok => Status);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number2);
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
else
Text_Manager.Text.Put_Line
("ORB : response : no observer"); end if;
My_Adress_String_And_Apply_Number1 :=
The_Message.
Read_Client_Adress_Internet_And_Apply_Number
(My_Send_Frame);
The_Message.Init_Destinataire
(My_Adress_String_And_Apply_Number1, My_Send_Frame);
The_Message.Init_Type_Of_Status
(T_Status.Orb_To_Client, My_Send_Frame);
The_Message.Init_Type_Of_Message
(T_Message.Response, My_Send_Frame);
My_Set_Of_Adress.Extract_The_Machine
(This_Set => Set_Of_Client,
This_Adress => My_Adress_String_And_Apply_Number1,
Answer_In => My_Host_Name);
My_Appli_Number :=
The_Message.Read_Apply_Number
(My_Adress_String_And_Apply_Number1);
Text_Manager.Text.Put_Line
("ORB : the send frame is : " &
The_Message.Image (My_Send_Frame));
The_Message.Send (My_Appli_Number, My_Host_Name,
My_Send_Frame, My_Status);
end;
when others =>
Text_Manager.Text.Put_Line ("ORB : Response : error case");
end case;
end Response;
procedure Subscription is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Subscription");
The_Message.Init_Data (My_Data_Iterator, My_Receive_Frame);
My_Receive_Data := The_Message.Value_Data (My_Data_Iterator);
Text_Manager.Text.Put_Line ("ORB : " &
"Observer specification is : " &
Com_Defs.Image (My_Receive_Data));
Set_Of_Fil_Observ.Add_Specification
(This_Set => Set_Of_Observer,
This_Adress => My_Adress_String_And_Apply_Number,
This_Specification => My_Receive_Data);
Set_Of_Fil_Observ.Contains_This_Specification
(This_Set => Set_Of_Observer,
This_Specification => My_Receive_Data,
The_Adress => My_Adress_String_And_Apply_Number1,
The_Status => Status);
if Status then
Text_Manager.Text.Put_Line ("ORB : Subscription add is OK");
else
Text_Manager.Text.Put_Line ("ORB : Subscription add isn't OK");
end if;
end Subscription;
procedure Unsubscription is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Unsubscription");
Set_Of_Fil_Observ.Delete_To
(This_Set => Set_Of_Observer,
This_Adress => My_Adress_String_And_Apply_Number);
end Unsubscription;
procedure Filtration is
begin
Text_Manager.Text.Put_Line ("ORB : Entry_Filtration");
The_Message.Init_Data (My_Data_Iterator, My_Receive_Frame);
My_Receive_Data := The_Message.Value_Data (My_Data_Iterator);
Text_Manager.Text.Put_Line ("Orb : Filter specification is : " &
Com_Defs.Image (My_Receive_Data));
Set_Of_Fil_Observ.Add_Specification
(This_Set => Set_Of_Filter,
This_Adress => My_Adress_String_And_Apply_Number,
This_Specification => My_Receive_Data);
Set_Of_Fil_Observ.Contains_This_Specification
(This_Set => Set_Of_Filter,
This_Specification => My_Receive_Data,
The_Adress => My_Adress_String_And_Apply_Number1,
The_Status => Status);
if Status then
Text_Manager.Text.Put_Line ("ORB : Filtration add is OK");
else
Text_Manager.Text.Put_Line ("ORB : Filtration add isn't OK");
end if;
end Filtration;
procedure Unfiltration is
begin
Text_Manager.Text.Put_Line ("Orb : Entry_Unfiltration");
Set_Of_Fil_Observ.Delete_To
(This_Set => Set_Of_Filter,
This_Adress => My_Adress_String_And_Apply_Number);
end Unfiltration;
begin
The_Contrats.Create_Set (My_Contrat);
My_Set_Of_Adress.Initialize (The_Set => Set_Of_Client);
My_Set_Of_Adress.Initialize (The_Set => Set_Of_Server);
Set_Of_Fil_Observ.Initialize (The_Set => Set_Of_Filter);
Set_Of_Fil_Observ.Initialize (The_Set => Set_Of_Observer);
The_Message.Init_T_Frame (My_Send_Frame);
Text_Manager.Text.Put_Line ("ORB : End of the init");
delay (10.0);
--*********************************************************
loop
loop
Text_Manager.Text.Put_Line ("ORB : is trying to receive");
The_Message.Receive (Orb_Appli_Number,
My_Receive_Frame, My_Status);
delay (30.0);
exit when My_Status = True;
end loop;
Text_Manager.Text.Put_Line ("ORB : has received" &
The_Message.Image (My_Receive_Frame));
My_Integer_Type_Of_Message :=
The_Message.Read_Type_Of_Message (My_Receive_Frame);
My_Integer_Type_Of_Status :=
The_Message.Read_Type_Of_Status (My_Receive_Frame);
My_Adress_String_And_Apply_Number :=
The_Message.Read_Source_Adress_Internet_And_Apply_Number
(My_Receive_Frame);
My_Adress_String :=
The_Message.Read_Source_Adress (My_Receive_Frame);
case My_Integer_Type_Of_Message is
when T_Message.T_Mess'Pos (T_Message.Error) =>
begin
Error;
end;
when T_Message.T_Mess'Pos (T_Message.Registration) =>
begin
Registration;
end;
when T_Message.T_Mess'Pos (T_Message.Unregistration) =>
begin
Unregistration;
end;
when T_Message.T_Mess'Pos (T_Message.Query) =>
begin
Query;
end;
when T_Message.T_Mess'Pos (T_Message.Request_Method) =>
begin
Request_Method;
end;
when T_Message.T_Mess'Pos (T_Message.Request_Service) =>
begin
Request_Service;
end;
when T_Message.T_Mess'Pos (T_Message.Notification) =>
begin
Notification;
end;
when T_Message.T_Mess'Pos (T_Message.Forward) =>
begin
Forward;
end;
when T_Message.T_Mess'Pos (T_Message.Publication) =>
begin
Publication;
end;
when T_Message.T_Mess'Pos (T_Message.Unpublication) =>
begin
Unpublication;
end;
when T_Message.T_Mess'Pos (T_Message.Response) =>
begin
Response;
end;
when T_Message.T_Mess'Pos (T_Message.Subscription) =>
begin
Subscription;
end;
when T_Message.T_Mess'Pos (T_Message.Unsubscription) =>
begin
Unsubscription;
end;
when T_Message.T_Mess'Pos (T_Message.Filtration) =>
begin
Filtration;
end;
when T_Message.T_Mess'Pos (T_Message.Unfiltration) =>
begin
Unfiltration; end;
when others =>
Text_Manager.Text.Put_Line ("Orb : " &
"type of message is unknown");
end case;
-- The_Contrats.Print (My_Contrat);
-- Text_Manager.Text.Put_Line ("Orb : description set of filter");
-- Set_Of_Fil_Observ.Print (Set_Of_Filter);
-- Text_Manager.Text.Put_Line ("Orb : description set of observer");
-- Set_Of_Fil_Observ.Print (Set_Of_Observer);
-- Text_Manager.Text.Put_Line ("Orb : description set of client");
-- My_Set_Of_Adress.Print (Set_Of_Client);
-- Text_Manager.Text.Put_Line ("Orb : description set of server");
-- My_Set_Of_Adress.Print (Set_Of_Server);
end loop;
end Object_Request_Broker;
end Master_Orb;
nblk1=46
nid=40
hdr6=6a
[0x00] rec0=1f rec1=00 rec2=01 rec3=00a
[0x01] rec0=15 rec1=00 rec2=3e rec3=044
[0x02] rec0=17 rec1=00 rec2=34 rec3=008
[0x03] rec0=10 rec1=00 rec2=3d rec3=064
[0x04] rec0=13 rec1=00 rec2=0c rec3=006
[0x05] rec0=12 rec1=00 rec2=10 rec3=016
[0x06] rec0=12 rec1=00 rec2=25 rec3=028
[0x07] rec0=17 rec1=00 rec2=32 rec3=042
[0x08] rec0=13 rec1=00 rec2=0f rec3=008
[0x09] rec0=1a rec1=00 rec2=0d rec3=01a
[0x0a] rec0=0f rec1=00 rec2=12 rec3=02c
[0x0b] rec0=12 rec1=00 rec2=24 rec3=014
[0x0c] rec0=10 rec1=00 rec2=2a rec3=02c
[0x0d] rec0=11 rec1=00 rec2=15 rec3=042
[0x0e] rec0=11 rec1=00 rec2=1d rec3=030
[0x0f] rec0=15 rec1=00 rec2=44 rec3=01e
[0x10] rec0=0e rec1=00 rec2=29 rec3=092
[0x11] rec0=10 rec1=00 rec2=45 rec3=008
[0x12] rec0=0f rec1=00 rec2=20 rec3=06c
[0x13] rec0=12 rec1=00 rec2=02 rec3=008
[0x14] rec0=11 rec1=00 rec2=04 rec3=058
[0x15] rec0=11 rec1=00 rec2=1e rec3=03a
[0x16] rec0=10 rec1=00 rec2=17 rec3=068
[0x17] rec0=1a rec1=00 rec2=3f rec3=040
[0x18] rec0=06 rec1=00 rec2=21 rec3=034
[0x19] rec0=14 rec1=00 rec2=14 rec3=074
[0x1a] rec0=16 rec1=00 rec2=30 rec3=058
[0x1b] rec0=15 rec1=00 rec2=2c rec3=086
[0x1c] rec0=01 rec1=00 rec2=39 rec3=058
[0x1d] rec0=10 rec1=00 rec2=1b rec3=092
[0x1e] rec0=05 rec1=00 rec2=0e rec3=006
[0x1f] rec0=10 rec1=00 rec2=2e rec3=09c
[0x20] rec0=11 rec1=00 rec2=1a rec3=08c
[0x21] rec0=10 rec1=00 rec2=06 rec3=058
[0x22] rec0=0f rec1=00 rec2=35 rec3=084
[0x23] rec0=10 rec1=00 rec2=3b rec3=010
[0x24] rec0=0e rec1=00 rec2=27 rec3=086
[0x25] rec0=0f rec1=00 rec2=42 rec3=06e
[0x26] rec0=12 rec1=00 rec2=22 rec3=070
[0x27] rec0=02 rec1=00 rec2=03 rec3=07c
[0x28] rec0=11 rec1=00 rec2=2d rec3=052
[0x29] rec0=11 rec1=00 rec2=41 rec3=002
[0x2a] rec0=10 rec1=00 rec2=0b rec3=06e
[0x2b] rec0=16 rec1=00 rec2=3c rec3=012
[0x2c] rec0=08 rec1=00 rec2=43 rec3=038
[0x2d] rec0=18 rec1=00 rec2=08 rec3=08e
[0x2e] rec0=17 rec1=00 rec2=07 rec3=00c
[0x2f] rec0=18 rec1=00 rec2=2f rec3=008
[0x30] rec0=18 rec1=00 rec2=28 rec3=04a
[0x31] rec0=05 rec1=00 rec2=11 rec3=034
[0x32] rec0=1e rec1=00 rec2=3a rec3=048
[0x33] rec0=1f rec1=00 rec2=36 rec3=002
[0x34] rec0=16 rec1=00 rec2=18 rec3=000
[0x35] rec0=16 rec1=00 rec2=18 rec3=000
[0x36] rec0=0e rec1=00 rec2=03 rec3=07c
[0x37] rec0=0e rec1=00 rec2=43 rec3=052
[0x38] rec0=0d rec1=00 rec2=08 rec3=086
[0x39] rec0=0e rec1=00 rec2=44 rec3=056
[0x3a] rec0=0b rec1=00 rec2=2f rec3=01e
[0x3b] rec0=10 rec1=00 rec2=2d rec3=006
[0x3c] rec0=0e rec1=00 rec2=25 rec3=018
[0x3d] rec0=0f rec1=00 rec2=33 rec3=004
[0x3e] rec0=0e rec1=00 rec2=26 rec3=044
[0x3f] rec0=14 rec1=00 rec2=1f rec3=07e
[0x40] rec0=10 rec1=00 rec2=06 rec3=034
[0x41] rec0=16 rec1=00 rec2=35 rec3=016
[0x42] rec0=11 rec1=00 rec2=18 rec3=024
[0x43] rec0=10 rec1=00 rec2=1a rec3=02a
[0x44] rec0=13 rec1=00 rec2=1b rec3=046
[0x45] rec0=0e rec1=00 rec2=39 rec3=000
tail 0x21763a0c487c59193abac 0x42a00088462060003
Free Block Chain:
0x40: 0000 00 33 00 05 80 02 67 65 02 72 76 2e 45 78 74 72 ┆ 3 ge rv.Extr┆
0x33: 0000 00 26 00 04 80 01 20 01 54 65 78 74 5f 4d 61 6e ┆ & Text_Man┆
0x26: 0000 00 1f 03 fc 00 3f 20 20 20 20 20 20 20 20 20 20 ┆ ? ┆
0x1f: 0000 00 38 03 f9 80 1b 20 20 20 20 20 20 20 20 20 20 ┆ 8 ┆
0x38: 0000 00 09 03 fc 80 16 5f 4f 72 62 5f 42 65 66 6f 72 ┆ _Orb_Befor┆
0x9: 0000 00 1c 03 fc 80 12 69 74 68 5f 54 68 69 73 5f 4e ┆ ith_This_N┆
0x1c: 0000 00 13 03 fc 80 23 20 20 20 20 20 20 20 20 20 20 ┆ # ┆
0x13: 0000 00 16 03 fc 80 09 53 74 61 74 65 27 50 6f 73 09 ┆ State'Pos ┆
0x16: 0000 00 31 03 fc 80 19 68 65 5f 43 6f 6e 74 72 61 74 ┆ 1 he_Contrat┆
0x31: 0000 00 2b 03 fc 80 01 2c 01 00 44 20 20 20 20 20 20 ┆ + , D ┆
0x2b: 0000 00 23 00 b9 80 28 62 20 3a 20 72 65 71 75 65 73 ┆ # (b : reques┆
0x23: 0000 00 37 03 fc 80 13 49 6e 69 74 5f 54 79 70 65 5f ┆ 7 Init_Type_┆
0x37: 0000 00 05 03 fc 80 31 20 20 20 20 20 20 20 20 20 20 ┆ 1 ┆
0x5: 0000 00 19 00 0b 80 08 20 20 20 20 20 20 20 20 08 75 ┆ u┆
0x19: 0000 00 0a 01 00 80 18 78 74 5f 4d 61 6e 61 67 65 72 ┆ xt_Manager┆
0xa: 0000 00 46 03 fc 80 2e 20 20 20 20 20 20 20 20 20 20 ┆ F . ┆
0x46: 0000 00 00 03 fc 80 30 20 20 20 20 20 20 20 20 20 20 ┆ 0 ┆