|
|
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: 22528 (0x5800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Query_Manager, seg_0574b6
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Frame_Defs;
with Orb_Defs;
with Letter_Box_Frames;
with Mail_Sender;
with Service_Manager;
with Text_Io;
package body Query_Manager is
package Frame_Sender is new Mail_Sender
(Frame_Defs.Frame, Frame_Defs.Get_Frame);
procedure Send_Echo (The_Frame : Frame_Defs.Frame) is
The_Connection_Id : Orb_Defs.Connection_Id;
The_Socket_Id : Orb_Defs.Socket_Id;
The_Host_Id : Orb_Defs.Host_Id;
The_Time_Out : Natural := 40;
The_Success : Boolean;
Null_Socket_Id : Orb_Defs.Socket_Id := Orb_Defs.Null_Socket_Id;
begin
Text_Io.Put_Line (Frame_Defs.Image (The_Frame));
Frame_Sender.Init (The_Connection_Id,
Orb_Defs.Network_Kind, Null_Socket_Id);
Frame_Defs.Get (Frame_Defs.Dest_Socket_Field, The_Frame, The_Socket_Id);
Frame_Defs.Get (Frame_Defs.Dest_Host_Field, The_Frame, The_Host_Id);
Frame_Sender.Send_Mail (The_Connection_Id, The_Host_Id, The_Socket_Id,
The_Time_Out, The_Success, The_Frame);
Frame_Sender.Close (The_Connection_Id);
end Send_Echo;
procedure Abonne_Agent (The_Frame : Frame_Defs.Frame) is
The_Funct : Orb_Defs.Funct;
The_Connection_Id : Orb_Defs.Connection_Id;
The_Host_Id : Orb_Defs.Host_Id;
The_Socket_Id : Orb_Defs.Socket_Id;
The_Message : Orb_Defs.Message;
The_Name : Orb_Defs.Name;
The_Message_Number : Natural;
Ok_Add : Boolean;
Null_Socket_Id : Orb_Defs.Socket_Id := Orb_Defs.Null_Socket_Id;
The_Result_Frame : Frame_Defs.Frame;
The_Time_Out : Natural := 40;
The_Success : Boolean;
begin
Frame_Defs.Get (Frame_Defs.Nom_Exp_Field, The_Frame, The_Name);
Frame_Defs.Get (Frame_Defs.Exp_Host_Field, The_Frame, The_Host_Id);
Frame_Defs.Get (Frame_Defs.Exp_Socket_Field, The_Frame, The_Socket_Id);
Frame_Defs.Get (Frame_Defs.Service_Field, The_Frame, The_Funct);
Frame_Defs.Get (Frame_Defs.Message_Field, The_Frame, The_Message);
Frame_Defs.Get (Frame_Defs.Message_Number_Field,
The_Frame, The_Message_Number);
Frame_Sender.Init (The_Connection_Id,
Orb_Defs.Network_Kind, Null_Socket_Id);
if The_Funct = "serv" then
Ok_Add := Service_Manager.Add_Service
(The_Name, The_Connection_Id, The_Host_Id,
The_Socket_Id, The_Message);
end if;
if The_Funct = "filt" then
Ok_Add := Service_Manager.Add_Filter
(The_Name, The_Connection_Id, The_Host_Id,
The_Socket_Id, The_Message);
end if;
if The_Funct = "spy" then
Ok_Add := Service_Manager.Add_Spy
(The_Name, The_Connection_Id, The_Host_Id,
The_Socket_Id, The_Message);
end if;
if Ok_Add = True then
Text_Io.Put_Line ("Registration succeeded");
Frame_Defs.Init_Frame
("orb ", The_Socket_Id, The_Host_Id, Orb_Defs.Default_Orb_Socket,
Orb_Defs.Default_Orb_Host, 0, The_Message_Number, "regi",
"ok ", "registration was successfull", The_Result_Frame);
Text_Io.Put_Line ("ORB is going to send the frame :");
Frame_Sender.Send_Mail (The_Connection_Id, The_Host_Id,
The_Socket_Id, The_Time_Out,
The_Success, The_Result_Frame);
else
Text_Io.Put_Line ("Registration failed");
Frame_Defs.Init_Frame ("orb ", The_Socket_Id, The_Host_Id,
Orb_Defs.Default_Orb_Socket,
Orb_Defs.Default_Orb_Host, 0,
The_Message_Number, "regi", "fail",
"registration failed", The_Result_Frame);
Text_Io.Put_Line ("ORB is going to send the frame :");
Frame_Sender.Send_Mail (The_Connection_Id, The_Host_Id,
The_Socket_Id, The_Time_Out,
The_Success, The_Result_Frame);
Frame_Sender.Close (The_Connection_Id);
end if;
end Abonne_Agent;
procedure Desabonne_Agent (The_Frame : Frame_Defs.Frame) is
The_Host_Id : Orb_Defs.Host_Id;
The_Socket_Id : Orb_Defs.Socket_Id;
The_Funct : Orb_Defs.Funct;
The_Destruct : Boolean;
The_Message_Number : Natural;
The_Connection_Id : Orb_Defs.Connection_Id;
The_Echo_Frame : Frame_Defs.Frame;
begin
Frame_Defs.Get (Frame_Defs.Exp_Socket_Field, The_Frame, The_Socket_Id);
Frame_Defs.Get (Frame_Defs.Exp_Host_Field, The_Frame, The_Host_Id);
Frame_Defs.Get (Frame_Defs.Service_Field, The_Frame, The_Funct);
if The_Funct = "serv" then
The_Destruct := Service_Manager.Remove_Service
(The_Host_Id, The_Socket_Id);
end if;
if The_Funct = "filt" then
The_Destruct := Service_Manager.Remove_Filter
(The_Host_Id, The_Socket_Id);
end if;
if The_Funct = "spy " then
The_Destruct := Service_Manager.Remove_Spy
(The_Host_Id, The_Socket_Id);
end if;
Frame_Defs.Get (Frame_Defs.Message_Number_Field,
The_Frame, The_Message_Number);
if The_Destruct = False then
Text_Io.Put_Line ("Unregistration failed");
Frame_Defs.Init_Frame ("orb ", The_Socket_Id, The_Host_Id,
Orb_Defs.Default_Orb_Socket,
Orb_Defs.Default_Orb_Host, 0,
The_Message_Number, "unre", "fail",
"unregistration failed", The_Echo_Frame);
else
Text_Io.Put_Line ("Unregistration succeeded");
Frame_Defs.Init_Frame ("orb ", The_Socket_Id, The_Host_Id,
Orb_Defs.Default_Orb_Socket,
Orb_Defs.Default_Orb_Host, 0,
The_Message_Number, "unre", "ok ",
"unregistration succeded", The_Echo_Frame);
end if;
Text_Io.Put_Line ("ORB is going to send the frame :");
Send_Echo (The_Echo_Frame);
end Desabonne_Agent;
procedure Direct_Send (The_Frame : Frame_Defs.Frame) is
The_Class : Orb_Defs.Class;
The_Funct : Orb_Defs.Funct;
The_Host_Id : Orb_Defs.Host_Id;
The_Socket_Id : Orb_Defs.Socket_Id;
The_Connection_Id : Orb_Defs.Connection_Id;
The_Exist : Boolean;
The_Message_Number : Natural;
The_Time_Out : Natural := 40;
The_Exp_Socket_Id : Orb_Defs.Socket_Id;
The_Exp_Host_Id : Orb_Defs.Host_Id;
The_Echo_Frame : Frame_Defs.Frame;
The_Success : Boolean;
begin
Frame_Defs.Get (Frame_Defs.Service_Kind_Field, The_Frame, The_Class);
Frame_Defs.Get (Frame_Defs.Service_Field, The_Frame, The_Funct);
if The_Class = "rjob" then
Text_Io.Put_Line ("ORB is going to send the frame :");
Send_Echo (The_Frame);
else
Text_Io.Put_Line ("ORB is going to check if the agent exist");
Frame_Defs.Get (Frame_Defs.Dest_Host_Field, The_Frame, The_Host_Id);
Frame_Defs.Get (Frame_Defs.Dest_Socket_Field,
The_Frame, The_Socket_Id);
Service_Manager.Exist_Service
(The_Class, The_Funct, The_Connection_Id,
The_Host_Id, The_Socket_Id, The_Exist);
if The_Exist = True then
Text_Io.Put_Line ("the agent exist");
Text_Io.Put_Line ("ORB is going to send the frame :");
Frame_Sender.Send_Mail (The_Connection_Id, The_Host_Id,
The_Socket_Id, The_Time_Out,
The_Success, The_Frame);
if The_Success = False then
Text_Io.Put_Line
("ORB cannot connect the agent and set the agent to failure");
Service_Manager.Set_Agent_To_Failure
(The_Host_Id, The_Socket_Id);
Frame_Defs.Get (Frame_Defs.Exp_Socket_Field,
The_Frame, The_Exp_Socket_Id);
Frame_Defs.Get (Frame_Defs.Exp_Host_Field,
The_Frame, The_Exp_Host_Id);
Frame_Defs.Get (Frame_Defs.Message_Number_Field,
The_Frame, The_Message_Number);
Frame_Defs.Init_Frame
("orb ", The_Exp_Socket_Id, The_Exp_Host_Id,
Orb_Defs.Default_Orb_Socket, Orb_Defs.Default_Orb_Host,
0, The_Message_Number, "rjob", "fail",
"the agent does not respond", The_Echo_Frame);
Text_Io.Put_Line ("ORB is going to send the frame :");
Send_Echo (The_Echo_Frame);
end if;
else
Text_Io.Put_Line ("the agent do not exist");
Frame_Defs.Get (Frame_Defs.Exp_Socket_Field,
The_Frame, The_Exp_Socket_Id);
Frame_Defs.Get (Frame_Defs.Exp_Host_Field,
The_Frame, The_Exp_Host_Id);
Frame_Defs.Get (Frame_Defs.Message_Number_Field,
The_Frame, The_Message_Number);
Frame_Defs.Init_Frame
("orb ", The_Exp_Socket_Id, The_Exp_Host_Id,
Orb_Defs.Default_Orb_Socket, Orb_Defs.Default_Orb_Host,
0, The_Message_Number, "rjob", "fail",
"the agent does not exist", The_Echo_Frame);
Text_Io.Put_Line ("ORB is going to send the frame");
Send_Echo (The_Echo_Frame);
end if;
end if;
end Direct_Send;
procedure Normal_Send (The_Frame : in out Frame_Defs.Frame) is
The_Class : Orb_Defs.Class;
The_Funct : Orb_Defs.Funct;
The_Connection_Id : Orb_Defs.Connection_Id;
The_Host_Id : Orb_Defs.Host_Id;
The_Socket_Id : Orb_Defs.Socket_Id;
The_Service_Delivrered : Boolean;
The_Time_Out : Natural := 40;
The_Success : Boolean;
The_Exp_Socket : Orb_Defs.Socket_Id;
The_Exp_Host : Orb_Defs.Host_Id;
The_Message_Number : Natural;
The_Exp_Socket_Id : Orb_Defs.Socket_Id;
The_Exp_Host_Id : Orb_Defs.Host_Id;
The_Echo_Frame : Frame_Defs.Frame;
The_Service_Delivered : Boolean;
begin
Frame_Defs.Get (Frame_Defs.Service_Kind_Field, The_Frame, The_Class);
Frame_Defs.Get (Frame_Defs.Service_Field, The_Frame, The_Funct);
Service_Manager.Ask_Service
(The_Class, The_Funct, The_Connection_Id,
The_Host_Id, The_Socket_Id, The_Service_Delivered);
if The_Service_Delivered = True then
Text_Io.Put_Line ("the service is found");
Frame_Defs.Set (Frame_Defs.Dest_Socket_Field,
The_Socket_Id, The_Frame);
Frame_Defs.Set (Frame_Defs.Dest_Host_Field, The_Host_Id, The_Frame);
Text_Io.Put_Line ("ORB is going to send the frame :");
Text_Io.Put_Line (Frame_Defs.Image (The_Frame));
Frame_Sender.Send_Mail (The_Connection_Id, The_Host_Id,
The_Socket_Id, The_Time_Out,
The_Success, The_Frame);
if The_Success = False then
Text_Io.Put_Line
("ORB cannot connect the agent and set the agent to failure");
Service_Manager.Set_Agent_To_Failure
(The_Host_Id, The_Socket_Id);
Frame_Defs.Get (Frame_Defs.Exp_Socket_Field,
The_Frame, The_Exp_Socket_Id);
Frame_Defs.Get (Frame_Defs.Exp_Host_Field,
The_Frame, The_Exp_Host_Id);
Frame_Defs.Get (Frame_Defs.Message_Number_Field,
The_Frame, The_Message_Number);
Frame_Defs.Init_Frame
("orb ", The_Exp_Socket_Id, The_Exp_Host_Id,
Orb_Defs.Default_Orb_Socket, Orb_Defs.Default_Orb_Host,
0, The_Message_Number, "rjob", "fail",
"the agent does not respond", The_Echo_Frame);
Text_Io.Put_Line ("ORB is going to send the frame : ");
Send_Echo (The_Echo_Frame);
end if;
else
Text_Io.Put_Line ("the service is not found");
Frame_Defs.Get (Frame_Defs.Exp_Socket_Field,
The_Frame, The_Exp_Socket_Id);
Frame_Defs.Get (Frame_Defs.Exp_Host_Field,
The_Frame, The_Exp_Host_Id);
Frame_Defs.Get (Frame_Defs.Message_Number_Field,
The_Frame, The_Message_Number);
Frame_Defs.Init_Frame
("orb ", The_Exp_Socket_Id, The_Exp_Host_Id,
Orb_Defs.Default_Orb_Socket, Orb_Defs.Default_Orb_Host,
0, The_Message_Number, "rjob", "fail",
"the service does not exist", The_Echo_Frame);
Text_Io.Put_Line ("ORB is going to send the _frame :");
Send_Echo (The_Echo_Frame);
end if;
end Normal_Send;
task Query_Manager_Task is
entry Dispose;
end Query_Manager_Task;
task body Query_Manager_Task is
The_Frame : Frame_Defs.Frame;
The_Socket_Id : Orb_Defs.Socket_Id;
The_Class : Orb_Defs.Class;
Done : Boolean := False;
begin
Text_Io.Put_Line ("Demmarrage de la tache Query Manager");
loop
select
accept Dispose do
Done := True;
end Dispose;
else
if Letter_Box_Frames.Check = True then
Text_Io.Put_Line ("Query Manager is going to read BAL !!");
Letter_Box_Frames.Read (The_Frame);
Frame_Defs.Get (Frame_Defs.Service_Kind_Field,
The_Frame, The_Class);
if The_Class = "regi" then
Text_Io.Put_Line ("ORB is going to register an agent");
Abonne_Agent (The_Frame);
else
if The_Class = "unre" then
Text_Io.Put_Line
("ORB is going to unregister an agent");
Desabonne_Agent (The_Frame);
else
Frame_Defs.Get (Frame_Defs.Dest_Socket_Field,
The_Frame, The_Socket_Id);
if Orb_Defs."=" (The_Socket_Id,
Orb_Defs.Null_Socket_Id) then
Text_Io.Put_Line
("ORB is going to find an agent for the service");
Normal_Send (The_Frame);
else
Text_Io.Put_Line
("ORB is going to send the answer");
Direct_Send (The_Frame);
end if;
end if;
end if;
end if;
end select;
Text_Io.Put_Line ("The Query Manager is alive");
exit when Done = True;
end loop;
end Query_Manager_Task;
procedure Dispose is
begin
Query_Manager_Task.Dispose;
end Dispose;
end Query_Manager;
nblk1=15
nid=d
hdr6=24
[0x00] rec0=1e rec1=00 rec2=01 rec3=01e
[0x01] rec0=1b rec1=00 rec2=08 rec3=04e
[0x02] rec0=10 rec1=00 rec2=02 rec3=086
[0x03] rec0=17 rec1=00 rec2=10 rec3=05a
[0x04] rec0=1a rec1=00 rec2=0f rec3=030
[0x05] rec0=19 rec1=00 rec2=05 rec3=062
[0x06] rec0=14 rec1=00 rec2=04 rec3=032
[0x07] rec0=1d rec1=00 rec2=07 rec3=044
[0x08] rec0=16 rec1=00 rec2=0e rec3=0a8
[0x09] rec0=14 rec1=00 rec2=0c rec3=022
[0x0a] rec0=17 rec1=00 rec2=06 rec3=04a
[0x0b] rec0=18 rec1=00 rec2=11 rec3=078
[0x0c] rec0=17 rec1=00 rec2=12 rec3=036
[0x0d] rec0=15 rec1=00 rec2=15 rec3=008
[0x0e] rec0=1d rec1=00 rec2=0b rec3=000
[0x0f] rec0=1f rec1=00 rec2=14 rec3=034
[0x10] rec0=1b rec1=00 rec2=0a rec3=012
[0x11] rec0=06 rec1=00 rec2=03 rec3=000
[0x12] rec0=12 rec1=00 rec2=05 rec3=062
[0x13] rec0=15 rec1=00 rec2=03 rec3=000
[0x14] rec0=15 rec1=00 rec2=03 rec3=000
tail 0x217645fa087c788554eb2 0x42a00088462060003
Free Block Chain:
0xd: 0000 00 13 00 62 80 3a 20 20 20 20 54 65 78 74 5f 49 ┆ b : Text_I┆
0x13: 0000 00 09 00 72 80 07 6f 73 74 2c 20 30 2c 07 00 46 ┆ r ost, 0, F┆
0x9: 0000 00 00 03 ef 80 32 20 20 54 65 78 74 5f 49 6f 2e ┆ 2 Text_Io.┆