DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ B T ┃
Length: 10409 (0x28a9) Types: TextFile Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13 └─ ⟦124ff5788⟧ »DATA« └─⟦this⟧ └─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16 └─ ⟦6f12a12be⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
with Action; with Asa_Definitions; with Calendar; with Directory; with Gateway_Object; with Gateways; with Hierarchy; with Logger; with Object_Class; with Profile; with Remote_Operations; with Simple_Status; with String_Utilities; with Unix_Definitions; pragma Elaborate (Asa_Definitions); package body Actions is package Asas renames Asa_Definitions.Switches; package Asap renames Asa_Definitions.Properties; package Dir renames Directory; package Dna renames Directory.Naming; package Gwo renames Gateway_Object; package Hchy renames Hierarchy; package Ro renames Remote_Operations; package Ss renames Simple_Status; package Su renames String_Utilities; package Unix renames Unix_Definitions; -- -- The following task keeps this package elaborated as long as its -- STOP entry is not called. -- Switch_Registration : Asas.Register; Default_Timeout : constant := 60.0; -- --------------------- -- ( ) Gateway utilities -- --------------------- function Root_Of (Gateway : in Dir.Object; Action_Id : in Action.Id) return Dir.Object is E : Dir.Error_Status; Gateway_Data : Dir.Statistics.Object_Data; Result : Dir.Object; use Dir; begin Result := Gateway; loop Dir.Statistics.Get_Object_Data (The_Object => Result, The_Data => Gateway_Data, Status => E, Action_Id => Action_Id); exit when Dir.Get_Class (Dir.Statistics.Object_Parent (Gateway_Data)) = Object_Class.Library; Result := Dir.Statistics.Object_Parent (Gateway_Data); end loop; return Result; end Root_Of; -- ------------ -- ( ) Currency -- ------------ procedure Accept_Changes (Gateway_Object : in Dir.Object; In_Context : in Ro.Context; Model : in String; Comments : in String; Work_Order : in String; Action_Id : in Action.Id; Has_Destroyed_Gateway : out Boolean) is Build_Time : Calendar.Time; Root_Gateway : Dir.Object; Root_Iterator : Hchy.Module_Iterator; Root_Module : Hchy.Module; The_State : Gateways.State; begin -- -- Compute module hierarchy for the associated model. -- Logger.Note ("Building module hierarchy for model " & Model); Hchy.Build (Model => Model, In_Context => In_Context, Root => Root_Module, Build_Time => Build_Time); Root_Iterator := Hchy.Make (Root_Module); Root_Gateway := Root_Of (Gateway_Object, Action_Id => Action_Id); Gateways.Initialize (The_State => The_State, Action_Id => Action_Id, Work_Order => Work_Order); -- -- Delete those gateways that no longer have corresponding -- modules. -- Gateways.Reduce (Gateway_Name => Dir.Naming.Get_Full_Name (Root_Gateway), Candidate_Modules => Root_Iterator, Comments => Comments, The_State => The_State); -- -- Create gateways for the new modules. -- Gateways.Augment (For_Module => Root_Module, In_Library => Dir.Naming.Get_Full_Name (Dir.Control_Point.Associated_Control_Point (Root_Gateway)), Host => Ro.Machine (In_Context), Model => Model, Update_Time => Build_Time, Comments => Comments, The_State => The_State); Gateways.Finalize (The_State); Has_Destroyed_Gateway := Dir.Naming.Get_Full_Name (Gateway_Object) = '[' & Dir.Error_Status'Image (Dir.Version_Error) & ']'; end Accept_Changes; function Is_Up_To_Date (Handle : Dc.Gateway_Handle; In_Context : in Ro.Context) return Boolean is Remote_Update_Time : Calendar.Time; S : Ss.Condition; use Calendar; begin Ro.Update_Time (Of_File => Asap.Data_Context (Handle) & Unix.Context_Separator & Asap.Data_Name (Handle), In_Context => In_Context, Result => Remote_Update_Time, Status => S, Options => ""); if Ss.Error (S) then -- -- If the remote file does not exist, we assume that the -- gateway is up to date. -- return True; end if; return Remote_Update_Time <= Asap.Asa_Update_Time (Handle); end Is_Up_To_Date; -- --------------------- -- ( ) Command execution -- --------------------- procedure Execute (Command : in String; Interactive : in Boolean; In_Context : in Ro.Context; Timeout : in Ro.Command_Timeout := Default_Timeout) is -- -- Interactive commands do require the definition of the X Window -- display. Also, it is not necessary to log messages indicating -- what is going on during such commands. -- type State_Record is record null; end record; The_Display : constant String := Asas.Remote_Display; Setenv_Display : constant String := Unix.Setenv & ' ' & Unix.Display & ' ' & The_Display; S : Ss.Condition; The_State : State_Record; procedure Process_Output (Text : String; Severity : Profile.Msg_Kind; State : in out State_Record; Response : in out Ro.Command_Response) is begin if Interactive then Logger.Debug (Text); else Logger.Note (Text); end if; Response := Ro.Nil; end Process_Output; procedure Read_Input (State : in out State_Record; Buffer : out String; Last : out Natural; Response : in out Ro.Command_Response) is begin Last := 0; Response := Ro.Abort_Command; Logger.Error ("Attempt to read input during command execution"); end Read_Input; procedure Timeout_Handler (State : in out State_Record; Response : in out Ro.Command_Response) is begin Response := Ro.Abort_Command; Logger.Error ("Timeout expired during command execution"); end Timeout_Handler; procedure Execute is new Ro.Execution_Generic (Execution_State => State_Record, Process_Output => Process_Output, Read_Input => Read_Input, Timeout_Handler => Timeout_Handler); begin if Interactive then if The_Display /= "" then Logger.Debug ("Executing command """ & Setenv_Display & '"'); Execute (Command => Setenv_Display, In_Context => In_Context, State => The_State, Status => S, Timeout => Default_Timeout); Logger.Status (S, Interactive => True); end if; end if; if Interactive then Logger.Debug ("Executing command """ & Command & '"'); else Logger.Note ("Executing command """ & Command & '"'); end if; Execute (Command => Command, In_Context => In_Context, State => The_State, Status => S, Timeout => Timeout); Logger.Status (S, Interactive => Interactive); end Execute; -- ------------------ -- ( ) Image creation -- ------------------ function Check_Writeable (H : in Gwo.Handle) return Ss.Condition is Gateway_Object : constant Dir.Object := Gwo.Directory_Object (H); Gateway_Full_Name : constant String := Dna.Get_Full_Name (Gateway_Object); S : Ss.Condition; The_Handle : Dc.Gateway_Handle := H; begin case Gateways.Cmvc_Control (Gateway_Full_Name) is when Gateways.Not_Controlled | Gateways.Controlled_Checked_Out => if Gwo.Is_Main_Object_Open_For_Update (H) then Ss.Initialize (S); else Gwo.Re_Open_Main_Object_For_Update (The_Handle, Errors => S); end if; return S; when Gateways.Controlled_Checked_In => Ss.Create_Condition (Status => S, Error_Type => "", Message => "Unable to obtain gateway object " & Gateway_Full_Name & "; it must be checked-out before it can be edited", Severity => Ss.Problem); return S; end case; end Check_Writeable; -- --------- -- ( ) Stubs -- --------- package body Model is separate; package body Module is separate; package body Requirement is separate; end Actions;