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: ┃ T V ┃
Length: 21962 (0x55ca) Types: TextFile Names: »V«
└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS └─ ⟦91c658230⟧ »DATA« └─⟦458657fb6⟧ └─⟦a5bbbb819⟧ └─⟦this⟧ └─⟦8ee07855d⟧ Bits:30000545 8mm tape, Rational 1000, DTIA 2_1_6 └─ ⟦0c25cb74a⟧ »DATA« └─⟦0182c9918⟧ └─⟦ed024cadb⟧ └─⟦d0624311f⟧ Bits:30000529 8mm tape, Rational 1000, DTIA 2_1_7 └─ ⟦f494b5154⟧ »DATA« └─⟦3ddce7122⟧ └─⟦ed024cadb⟧ └─⟦this⟧ └─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3 └─ ⟦fc9b38f02⟧ »DATA« └─⟦9b46a407a⟧ └─⟦eec0a994f⟧ └─⟦this⟧
with Profile; with Calendar; with Simple_Status; with Device_Independent_Io; package Remote_Operations is subtype Error_Status is Simple_Status.Condition; --------------------------- -- CONNECTION MANAGEMENT -- --------------------------- -- -- Connections are implicitly established and recorded in an active -- connection pool during the target operations listed below. The -- connection management operations listed here provide a means of -- directly querying and modifying the active connection pool. When -- a new connection is required after the open connection limit has -- been reached, the least recently used connection is displaced by -- the new connection. -- -- The active connection pool is maintained on a per login session -- basis. When a particular job ACQUIRE's access to a new target -- context, a CONTEXT object is created, recorded in the active -- connection pool, and marked 'in use'. When the job RELEASE's -- access on the object, it is made available to other jobs on the -- session via the active connection pool and the target connection -- is left open. When a job DESTROY's a context object, the target -- connection is closed and the object is removed from the active -- connection pool. type Context is private; -- -- Represents the context of a particular connection within the -- active connection pool. Objects of this type are logically -- composed of a set of fields that uniquely name a particular -- remote operations server on a given machine. Nil_Context : constant Context; procedure Acquire (A_Context : out Context; Status : out Error_Status; Machine : String; Instance : String := ""); procedure Acquire (A_Context : out Context; Status : out Error_Status; Machine : String; User : String; Password : String; Session : String; Instance : String := ""); -- -- Acquires a connection context for the given <machine, user, session, -- instance> quadruple. All subsequent target operations that use -- this CONTEXT will be executed on the target server running on -- MACHINE on behalf of USER for the given INSTANCE. The values for -- password and session are derived implicitly from the given -- values. type Connection_Timeout is new Duration; -- -- Determines how long an open connection is allowed to -- persist in the active connection pool when not in use. None : constant Connection_Timeout := Connection_Timeout'Last; After_Operation : constant Connection_Timeout := 0.0; Default : constant Connection_Timeout := -1.0; procedure Release (A_Context : in out Context; Status : out Error_Status; Idle_Timeout : Connection_Timeout := Remote_Operations.Default); -- -- Returns A_CONTEXT back to the active connection pool. IDLE_TIMEOUT -- can be used to reset the timeout value for A_CONTEXT. Subsequent -- operations that require the same context will reuse A_CONTEXT if -- the request occurs before IDLE_TIMEOUT. procedure Destroy (A_Context : in out Context; Status : out Error_Status); -- -- Explicitly disconnects A_CONTEXT and removes it from the -- active connection pool. When not IS_CONNECTED (A_CONTEXT), -- a STATUS value of NOT_CONNECTED is returned. \f function Is_Nil (A_Context : Context) return Boolean; -- -- Indicates whether A_CONTEXT has been initialized. function Machine (Of_Context : Context) return String; -- -- Returns the machine name associated with of OF_CONTEXT. When -- IS_NIL (OF_CONTEXT), "" is returned. function User (Of_Context : Context) return String; -- -- Returns the username associated with of OF_CONTEXT. When -- IS_NIL (OF_CONTEXT), "" is returned. function Password (Of_Context : Context) return String; -- -- Returns the password associated with of OF_CONTEXT. When -- IS_NIL (OF_CONTEXT), "" is returned. function Session (Of_Context : Context) return String; -- -- Returns the session associated with of OF_CONTEXT. When -- IS_NIL (OF_CONTEXT), "" is returned. function Instance (Of_Context : Context) return String; -- -- Returns the instance associated with of OF_CONTEXT. When -- IS_NIL (OF_CONTEXT), "" is returned. function Is_Connected (A_Context : Context) return Boolean; -- -- Indicates whether A_CONTEXT is currently a member of -- the active connection pool and is still connected to -- MACHINE (A_CONTEXT). function Timeout (Of_Context : Context) return Connection_Timeout; -- -- Indicates the number of seconds remaining before -- OF_CONTEXT will reach its idle timeout. Returns 0.0 -- when not IS_CONNECTED (OF_CONTEXT). \f --------------------- -- FILE MANAGEMENT -- --------------------- -- -- Each of the file management operations listed below operates -- in the naming context established during ACQUIRE (i.e. the -- user's home directory. N.B. This naming context is not affected -- by command execution. Whenever an error prevents the successful -- completion of a given operation, an error status and diagnostic -- message are constructed and returned to the caller. This status -- information is suitable for display to a user. -- -- For a listing of the error status values returned through these -- interfaces, see the file management error statuses listed at the -- end of this package subtype Form_Options is String; -- -- Represents the options that can be applied in the context of -- a particular file manipulation operation. --!!! DETAILS: [TO BE SPECIFIED] (ACLs, File Format, et al) !!! subtype Rational_Pathname is String; -- -- Represents a Rational object naming expression. Nil_Device : constant Rational_Pathname := "!MACHINE.DEVICES.NIL"; subtype Remote_Pathname is String; -- -- Represents a valid unambiguous naming expression on a given -- remote machine. The format and semantics for parameters of -- this type are dependent on the remote machine type. procedure Create_Directory (In_Context : Context; With_Name : Remote_Pathname; Status : out Error_Status; Create_Directories : Boolean := True; Options : Form_Options := ""); -- -- Creates a remote directory named WITH_NAME on remote -- machine IN_CONTEXT. When CREATE_DIRECTORIES, any naming -- components in the prefix of WITH_NAME are created implicitly. procedure Create_File (In_Context : Context; With_Name : Remote_Pathname; Status : out Error_Status; Create_Directories : Boolean := True; Options : Form_Options := ""); -- -- Creates a remote file named WITH_NAME on remote machine -- IN_CONTEXT. When CREATE_DIRECTORIES is True, any directories -- missing from the pathname of the remote file are created -- implicitly. procedure Put (From_File : Rational_Pathname; To_File : Remote_Pathname; In_Context : Context; Status : out Error_Status; Append : Boolean := False; Options : Form_Options := ""); -- -- Copies the contents of local_file FROM_FILE to the remote file -- TO_FILE on machine IN_CONTEXT. When TO_FILE already exists, its -- contents are overlayed. When TO_FILE does not exist, it will be -- CREATE_FILE'd with parameter CREATE_DIRECTORIES => FALSE and then -- copied. procedure Put (From_File : Device_Independent_Io.File_Type; To_File : Remote_Pathname; In_Context : Context; Status : out Error_Status; Append : Boolean := False; Options : Form_Options := ""); -- -- PRECONDITION: Dio.Is_Open (From_File) and then -- Dio.Mode (From_File) = Dio.In_File -- -- Copies the contents of FROM_FILE to the remote file TO_FILE on -- machine IN_CONTEXT. When TO_FILE already exists, its contents -- are overlayed. When TO_FILE does not exist, it will be CREATE'd -- with parameter CREATE_DIRECTORIES => FALSE and then copied. procedure Get (From_File : Remote_Pathname; In_Context : Context; To_File : Rational_Pathname; Status : out Error_Status; Append : Boolean := False; Options : Form_Options := ""); -- -- Copies the contents of remote file FROM_FILE on remote machine -- IN_CONTEXT into local file TO_FILE. procedure Get (From_File : Remote_Pathname; In_Context : Context; To_File : Device_Independent_Io.File_Type; Status : out Error_Status; Options : Form_Options := ""); -- -- PRECONDITION: Dio.Is_Open (To_File) and then -- Dio.Mode (To_File) = Dio.Out_File -- -- Copies the contents of remote file FROM_FILE on remote machine -- IN_CONTEXT into local file TO_FILE. procedure Update_Time (Of_File : Remote_Pathname; In_Context : Context; Result : out Calendar.Time; Status : out Error_Status; Options : Form_Options := ""); -- -- Returns the time that remote file OF_FILE on remote machine -- IN_CONTEXT was last modified. procedure File_Exists (The_File : Remote_Pathname; In_Context : Context; Status : out Error_Status; Exists : out Boolean); -- -- Returns whether the remote file THE_FILE exists on the remote machine -- IN_CONTEXT. procedure Copy (From_File : Remote_Pathname; To_File : Remote_Pathname; In_Context : Context; Status : out Error_Status; Options : Form_Options := ""); -- -- Copies remote file FROM_FILE to remote file TO_FILE. Both -- files must be on the same remote machine IN_CONTEXT. procedure Link (From_File : Remote_Pathname; To_File : Remote_Pathname; In_Context : Context; Status : out Error_Status; Options : Form_Options := ""); -- -- Creates a link remote file FROM_FILE to remote file TO_FILE. -- Both files must be on the same remote machine IN_CONTEXT. -- May not be supported on all remote platforms. procedure Delete_Directory (In_Context : Context; With_Name : Remote_Pathname; Status : out Error_Status; Recursive : Boolean := True; Options : Form_Options := ""); -- -- Removes the remote directory WITH_NAME on remote machine -- IN_CONTEXT. When RECURSIVE is True, the named directory -- and its contents are deleted; otherwise, the directory -- must be empty. procedure Delete_File (In_Context : Context; With_Name : Remote_Pathname; Status : out Error_Status; Options : Form_Options := ""); -- -- Removes the remote file FILE from remote machine IN_CONTEXT. procedure Expunge (In_Context : Context; Object : Remote_Pathname; Status : out Error_Status; Options : Form_Options := ""); -- -- Assures that deleted versions or retained copies of OBJECT -- are destroyed on IN_CONTEXT. procedure Move (From_File : Remote_Pathname; To_File : Remote_Pathname; In_Context : Context; Status : out Error_Status; Options : Form_Options := ""); -- -- This operation is functionally equivalent to Copy/Delete, but may -- perform more efficiently on some targets. \f ----------------------- -- COMMAND EXECUTION -- ----------------------- subtype Command_Input is String; -- -- Represents a sequence of one or more commands in the command -- language of the given remote machine. The format and semantics -- for parameters of this type are dependent on the remote machine -- type. type Command_Timeout is new Duration; Wait_Forever : constant Command_Timeout := Command_Timeout'Last; procedure Execute (Command : Command_Input; In_Context : Context; Status : out Error_Status; Timeout : Command_Timeout := Remote_Operations.Wait_Forever); -- -- Executes the command string COMMAND on remote machine IN_CONTEXT. -- The standard input, output, and error files of the remote command -- are logically mapped to the Io.Current_Input, Io.Current_Output, -- and Io.Current_Error respectively. procedure Execute (Command : Command_Input; In_Context : Context; Input : Rational_Pathname := Remote_Operations.Nil_Device; Output : Rational_Pathname; Error : Rational_Pathname; Status : out Error_Status; Timeout : Command_Timeout := Remote_Operations.Wait_Forever); -- -- Executes the command string COMMAND on remote machine IN_CONTEXT. -- The standard output and error files of the remote command are -- copied into OUTPUT and ERROR respectively. procedure Execute (Command : Command_Input; In_Context : Context; Input : Device_Independent_Io.File_Type; Output : Device_Independent_Io.File_Type; Error : Device_Independent_Io.File_Type; Status : out Error_Status; Timeout : Command_Timeout := Remote_Operations.Wait_Forever); -- -- PRECONDITION: Dio.Is_Open (Input) and then -- Dio.Is_Open (Output) and then -- Dio.Is_Open (Error) and then -- Dio.Mode (Input) = Dio.In_File and then -- Dio.Mode (Output) = Dio.Out_File and then -- Dio.Mode (Error) = Dio.Out_File -- -- Executes the command string COMMAND on remote machine IN_CONTEXT. -- The standard output and error files of the remote command are -- copied into OUTPUT and ERROR respectively. type Command_Response is (Nil, -- Reset the timeout clock and continue. Read_Input, -- Call the Read_Input formal and continue. Abort_Command -- Terminate the command job. ); generic type Execution_State is limited private; -- -- Can be used to associated state information with a -- particular command sequence. with procedure Process_Output (Text : String; Severity : Profile.Msg_Kind; State : in out Execution_State; Response : in out Command_Response); -- -- Called for each buffer of command output generated during -- the calls to EXECUTE below. TEXT contains the raw output -- received during command execution, and the client is -- responsible for processing any format effectors that may -- appear in the buffer. with procedure Read_Input (State : in out Execution_State; Buffer : out String; Last : out Natural; Response : in out Command_Response); -- -- Called on demand whenever the response to a timeout event -- indicates that input should be read. This operation is -- called repeatedly until RESPONSE /= READ_INPUT. with procedure Timeout_Handler (State : in out Execution_State; Response : in out Command_Response); -- -- Called when the specified timeout interval has been reached -- without response from the given command. procedure Execution_Generic (Command : Command_Input; In_Context : Context; State : in out Execution_State; Status : out Error_Status; Timeout : Command_Timeout := Remote_Operations.Wait_Forever); ------------------------- -- ERROR STATUS VALUES -- ------------------------- type Error_Kinds is range 0 .. 255; function Error_Kind (Of_Status : Error_Status) return Error_Kinds; -- -- Returns the associated Error_Kinds value for OF_STATUS. When -- OF_STATUS does not indicate an error condition, NOT_AN_ERROR is -- returned. When OF_STATUS indicates an error but has no -- associated Error_Kinds value, UNKNOWN_ERROR is returned. Not_An_Error : constant Error_Kinds := Error_Kinds'First; Unknown_Error : constant Error_Kinds := Error_Kinds'Last; Connection_Error : constant Error_Kinds := 001; Bad_User : constant Error_Kinds := 002; Access_Error : constant Error_Kinds := 003; Device_Error : constant Error_Kinds := 004; Lock_Error : constant Error_Kinds := 005; Name_Error : constant Error_Kinds := 006; Policy_Error : constant Error_Kinds := 007; Status_Error : constant Error_Kinds := 008; Storage_Error : constant Error_Kinds := 009; Unsupported : constant Error_Kinds := 010; Use_Error : constant Error_Kinds := 011; Command_Error : constant Error_Kinds := 012; Command_Terminated : constant Error_Kinds := 013; Command_Timed_Out : constant Error_Kinds := 014; Execution_Error : constant Error_Kinds := 015; Resource_Limit : constant Error_Kinds := 016; Internal_Error : constant Error_Kinds := 017; ----------------------------------- -- SERVER VERSIONS AND PLATFORMS -- ----------------------------------- type Revision_Ids is range 0 .. 255; Nil_Revision_Id : constant Revision_Ids := Revision_Ids'First; Major : constant := 1; Minor : constant := 2; type Version_Ids is array (Major .. Minor) of Revision_Ids; Nil_Version_Id : constant Version_Ids := Version_Ids'(Major => Nil_Revision_Id, Minor => Nil_Revision_Id); function Image (Of_Version : Version_Ids) return String; -- -- Returns the image of OF_VERSION with a period ('.') separator -- between the major and minor revision identifiers. When -- OF_VERSION = NIL_VERSION, "???" is returned. function Server_Version (Of_Context : Context) return Version_Ids; -- -- Returns the target server version associated with OF_CONTEXT. -- When IS_NIL (OF_CONTEXT), NIL_VERSION_ID is returned. function Server_Version (Of_Context : Context) return String; -- -- Returns IMAGE (SERVER_VERSION (OF_CONTEXT)). type Platforms is range 0 .. 255; Unknown : constant Platforms := Platforms'First; Sun : constant Platforms := 001; Apollo : constant Platforms := 002; Ibm : constant Platforms := 003; Hp : constant Platforms := 004; Vax : constant Platforms := 005; Vax_Ultrix : constant Platforms := 006; Ibm_Os2 : constant Platforms := 007; function Image (Of_Platform : Platforms) return String; -- -- Returns an image of the platform name indicated by -- OF_PLATFORM. Returns "Unknown" when OF_PLATFORM = UNKNOWN. function Platform (Of_Context : Context) return Platforms; -- -- Returns the target platform associated with OF_CONTEXT. -- When IS_NIL (OF_CONTEXT), UNKNOWN is returned. function Platform (Of_Context : Context) return String; -- -- Returns IMAGE (PLATFORM (OF_CONTEXT)). pragma Subsystem (Tools_Integration); pragma Module_Name (4, 4128); pragma Bias_Key (29); private type Context_Data; type Context is access Context_Data; pragma Segmented_Heap (Context); Nil_Context : constant Context := null; end Remote_Operations;