|
|
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: 13312 (0x3400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Gestion_Orb, seg_056a17
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Text_Io;
with Gestion_Table;
with V_String;
with Utils;
with Byte_Defs;
package body Gestion_Orb is
Competence_Found : Boolean;
procedure Traite_Objet (Objet_Traite : in out Message.Objet;
Socket_Recep : Transport_Defs.Socket_Id;
Host_Recep : Transport_Defs.Host_Id;
Socket_Emis : in out Transport_Defs.Socket_Id;
Host_Emis : in out Transport_Defs.Host_Id) is
All_Seen : Boolean;
Service_Available_Orb : Boolean;
Ordre_Mes : Integer;
Type_Of_Object : Message.Type_Message;
Indice_Trouve : Integer;
begin
--Text_Io.Put_Line ("Gestion_Orb::Traite_objet -- entree");
Type_Of_Object := Message.Consulter_Typ (Objet_Traite);
case Type_Of_Object is
when Message.Registration =>
begin
-- Text_Io.Put_Line
-- ("Gestion_Orb::Traite_Objet -- entree dans Registration");
Message.Modifier_Expediteur
(Objet_Traite, Registration_Of_Server
(Socket_Recep, Host_Recep));
Message.Modifier_Typ (Objet_Traite,
Message.Answer_Registration);
Socket_Emis := Socket_Recep;
Host_Emis := Host_Recep;
end;
when Message.Publication =>
begin
-- Text_Io.Put_Line
-- ("Gestion_orb::Traite_objet -- entree dans publication");
Add_Service (V_String.Image
(Message.Consulter_Donnee (Objet_Traite)),
Message.Consulter_Expediteur (Objet_Traite));
-- Text_Io.Put_Line
-- ("Gestion_Orb::Traite_Objet -- publication fin ad_service");
Message.Modifier_Typ (Objet_Traite, Message.Service_Added);
-- Text_Io.Put_Line
-- ("Gestion_Orb::Traite_Objet -- publication fin modif_type");
Give_Host_Socket_Of_Indice
(Message.Consulter_Expediteur (Objet_Traite),
Host_Emis, Socket_Emis);
-- Text_Io.Put_Line
-- ("host_emis : " &
-- Utils.Byte_String_To_String
-- (Byte_Defs.Byte_String (Host_Emis)) & "sock : " &
-- Utils.Byte_String_To_String
-- (Byte_Defs.Byte_String (Socket_Emis)));
end;
when Message.Request =>
begin
Ordre_Mes := 0;
--Text_Io.Put_Line ("Gestion_orb::debut de request");
--Text_Io.Put_Line (V_String.Image (Message.Consulter_Donnee
-- (Objet_Traite)));
Get_Host_Socket_Of_Service
(V_String.Image (Message.Consulter_Donnee
(Objet_Traite)),
Ordre_Mes, Host_Emis, Socket_Emis,
Indice_Trouve, All_Seen, Service_Available_Orb);
-- Text_Io.Put_Line ("getion_orb::available:");
Message.Modifier_Typ (Objet_Traite,
Message.Message_For_Server);
Message.Modifier_Destinataire (Objet_Traite, Indice_Trouve);
if Service_Available_Orb = False then
Message.Modifier_Typ (Objet_Traite,
Message.Service_Not_Available);
Message.Modifier_Destinataire
(Objet_Traite, Message.Consulter_Expediteur
(Objet_Traite));
Give_Host_Socket_Of_Indice
(Message.Consulter_Expediteur (Objet_Traite),
Host_Emis, Socket_Emis);
end if;
-- Text_Io.Put_Line ("gestion_orb::traite_objet:host:" &
-- Utils.Byte_String_To_String
-- (Byte_Defs.Byte_String (Host_Emis)));
-- Text_Io.Put_Line ("gestion_orb::traite_ojet:socket:" &
-- Utils.Byte_String_To_String
-- (Byte_Defs.Byte_String (Socket_Emis)));
end;
when Message.Service_Result =>
begin
Message.Modifier_Typ (Objet_Traite, Message.Your_Answer);
Give_Host_Socket_Of_Indice
(Message.Consulter_Expediteur (Objet_Traite),
Host_Emis, Socket_Emis);
end;
when Message.Unregistration =>
begin
--Text_Io.Put_Line
-- ("debut gestion orb unregistration de l'objet numero " &
-- Integer'Image (Message.Consulter_Expediteur
-- (Objet_Traite)));
Gestion_Table.Disable
(Message.Consulter_Expediteur (Objet_Traite));
-- Text_Io.Put_Line ("gestion orb apres disable");
Message.Modifier_Typ (Objet_Traite,
Message.Answer_Unregistration);
-- Text_Io.Put_Line ("gestion orb type modifie");
Give_Host_Socket_Of_Indice
(Message.Consulter_Expediteur (Objet_Traite),
Host_Emis, Socket_Emis);
-- Text_Io.Put_Line
-- ("gestion_orb recuperation socket et host");
end;
when others =>
begin
Text_Io.Put_Line
("Gestion_orb::Traite_Objet : erreur sur le type du message ---------------------");
end;
end case;
end Traite_Objet;
function Registration_Of_Server
(Nsocket : Transport_Defs.Socket_Id;
Hname : Transport_Defs.Host_Id) return Integer is
begin
return Gestion_Table.Add_Item_Tab_A (Nsocket, Hname);
end Registration_Of_Server;
procedure Add_Service (Competence : String; Ident_I : Integer) is
begin
Gestion_Table.Add_Service_Tab_B (Competence, Ident_I);
end Add_Service;
procedure Get_Host_Socket_Of_Service
(Competence : String;
Ordre : in out Integer;
Hname : in out Transport_Defs.Host_Id;
Socket : in out Transport_Defs.Socket_Id;
Indice_Tab_A_Trouve : in out Integer;
All_Seen : in out Boolean;
Serv_Available : in out Boolean) is
Enabled_Ordre : Boolean;
Indice_Tab_A : Integer := 1;
begin
loop
Gestion_Table.Return_Contenu_Liste_Position
(Gestion_Table.Return_Liste_Tab_B (Competence), Ordre,
Indice_Tab_A, Enabled_Ordre, All_Seen, Competence_Found);
exit when (Enabled_Ordre = True or All_Seen = True or
Competence_Found = False);
Ordre := Ordre + 1;
--Text_Io.Put_Line
-- ("gestion_orb::get_host_socket_of_service: ordre :" &
-- Integer'Image (Ordre) & "indice_trouve" &
-- Integer'Image (Indice_Tab_A));
end loop;
--Text_Io.Put_Line ("apres trouve : " & Integer'Image (Indice_Tab_A));
if Competence_Found = False or Enabled_Ordre = False then
Serv_Available := False;
-- Text_Io.Put_Line
-- ("Gestion_Orb::Get_Host_Socket_Of_Service : partie comptence_found = false");
All_Seen := False;
Indice_Tab_A_Trouve := 1;
else
-- Text_Io.Put_Line
-- ("Gestion_Orb::Get_Host_Socket_Of_Service : partie comptence_found = true");
Serv_Available := True;
Gestion_Table.Give_Host_Socket_Tab_A (Indice_Tab_A, Hname, Socket);
-- Text_Io.Put_Line ("gestion_orb::get_host_...:host trouve et emis" &
-- Utils.Byte_String_To_String
-- (Byte_Defs.Byte_String (Hname)));
-- Text_Io.Put_Line ("socket trouve et emis" &
--Utils.Byte_String_To_String (Byte_Defs.Byte_String (Socket));
Indice_Tab_A_Trouve := Indice_Tab_A;
-- Text_Io.Put_Line ("gestion_orb::get_host_socket_of_service:FIN");
end if;
--Text_Io.Put_Line ("gestion_orb::Get_Host_Socket_Of_Service : FIN");
--Text_Io.Put_Line
-- ("gestion_orb::Get_host_socket_of_service : renvoye : " &
--Boolean'Image (Serv_Available));
end Get_Host_Socket_Of_Service;
procedure Give_Host_Socket_Of_Indice
(Indice : Integer;
Hname : in out Transport_Defs.Host_Id;
Socket : in out Transport_Defs.Socket_Id) is
begin
Gestion_Table.Give_Host_Socket_Tab_A (Indice, Hname, Socket);
end Give_Host_Socket_Of_Indice;
procedure Init_Tableaux is
begin
Gestion_Table.Init_Tab_B;
end Init_Tableaux;
end Gestion_Orb;
nblk1=c
nid=3
hdr6=14
[0x00] rec0=1d rec1=00 rec2=01 rec3=01e
[0x01] rec0=11 rec1=00 rec2=05 rec3=076
[0x02] rec0=13 rec1=00 rec2=0c rec3=05a
[0x03] rec0=10 rec1=00 rec2=02 rec3=052
[0x04] rec0=12 rec1=00 rec2=0a rec3=01a
[0x05] rec0=12 rec1=00 rec2=07 rec3=056
[0x06] rec0=1c rec1=00 rec2=06 rec3=028
[0x07] rec0=14 rec1=00 rec2=09 rec3=06e
[0x08] rec0=11 rec1=00 rec2=08 rec3=060
[0x09] rec0=17 rec1=00 rec2=0b rec3=000
[0x0a] rec0=09 rec1=00 rec2=03 rec3=000
[0x0b] rec0=13 rec1=00 rec2=04 rec3=001
tail 0x21762f8b687c49707eee1 0x42a00088462060003
Free Block Chain:
0x3: 0000 00 04 00 11 80 0e 74 72 69 6e 67 2e 49 6d 61 67 ┆ tring.Imag┆
0x4: 0000 00 00 02 7f 80 13 74 65 5f 53 74 72 69 6e 67 5f ┆ te_String_┆