-- File: [Igor]<Emerson>STP>Friends>UnsafeSTP.mesa Edited by: -- Smokey, 6-Jul-81 17:58:25 -- Karlton, 9-Dec-81 18:11:47 -- Bruce, 10-Nov-81 16:15:44 -- Mark, 21-May-81 15:45:50 -- JGS, 14-Aug-81 16:50:01 -- Davirro, 27-Aug-82 15:40:22 -- Loretta, 14-Sep-82 15:10:46 -- Schmidt February 6, 1983 9:03 pm DIRECTORY Ascii USING [NUL], Stream USING [ Handle, InputOptions, SetSSTProcedure, SendAttentionProcedure, WaitAttentionProcedure], System USING [gmtEpoch], Time USING [Packed]; UnsafeSTP: DEFINITIONS = BEGIN -- Types and data Handle: TYPE = LONG POINTER TO Object; Object: TYPE; Access: TYPE = {read, write}; Completion: TYPE = {ok, error}; Continue: TYPE = {yes, no}; Confirmation: TYPE = {do, skip, abort}; ValidProperties: TYPE = { userName, userPassword, connectName, connectPassword, directory, nameBody, version, createDate, readDate, writeDate, byteSize, type, size, author, eolConversion, account, userAccount, device, serverName}; DesiredProperties: TYPE = PACKED ARRAY ValidProperties OF BOOLEAN ← ALL[FALSE]; CompletionProcType: TYPE = PROCEDURE [what: Completion, fileOrError: LONG STRING]; ConfirmProcType: TYPE = PROCEDURE [file: LONG STRING] RETURNS [answer: Confirmation, localStream: Stream.Handle]; NoteFileProcType: TYPE = PROCEDURE [file: LONG STRING] RETURNS [continue: Continue]; FileInfo: TYPE = LONG POINTER TO FileInfoObject; FileInfoObject: TYPE = RECORD [ directory, body, version: LONG STRING ← NIL, author: LONG STRING ← NIL, create, read, write: LONG STRING ← NIL, size: LONG CARDINAL ← 0, type: Type ← unknown]; Type: TYPE = MACHINE DEPENDENT {unknown(0), text, binary}; defaultOptions: Stream.InputOptions = [ terminateOnEndPhysicalRecord: FALSE, signalLongBlock: FALSE, signalShortBlock: FALSE, signalSSTChange: TRUE, signalEndOfStream: TRUE]; -- Procedures Close: PROCEDURE [stp: Handle]; Connect: PROCEDURE [stp: Handle, name, password: LONG STRING]; Create: PROCEDURE RETURNS [stp: Handle]; CreateRemoteStream: PROCEDURE [ stp: Handle, file: LONG STRING, access: Access, fileType: Type ← unknown, options: Stream.InputOptions ← defaultOptions, creation: Time.Packed ← System.gmtEpoch] RETURNS[stream: Stream.Handle]; Delete: PROCEDURE [ stp: Handle, name: LONG STRING, confirm: ConfirmProcType ← NIL, complete: CompletionProcType ← NIL]; Destroy: PROCEDURE [stp: Handle] RETURNS [Handle]; Enumerate: PROCEDURE [stp: Handle, name: LONG STRING, proc: NoteFileProcType]; IsOpen: PROCEDURE [stp: Handle] RETURNS [yes: BOOLEAN]; GetFileInfo: PROCEDURE [stp: Handle] RETURNS [FileInfo]; GetProperty: PROCEDURE [stp: Handle, prop: ValidProperties] RETURNS [LONG STRING]; GetDesiredProperties: PROCEDURE [stp: Handle] RETURNS [props: DesiredProperties]; Login: PROCEDURE [stp: Handle, name, password: LONG STRING]; NextFileName: PROCEDURE [remoteStream: Stream.Handle] RETURNS [file: LONG STRING]; Open: PROCEDURE [stp: Handle, host: LONG STRING] RETURNS [herald: LONG STRING]; Rename: PROCEDURE [stp: Handle, old, new: LONG STRING]; Retrieve: PROCEDURE [ stp: Handle, file: LONG STRING, confirm: ConfirmProcType ← NIL, complete: CompletionProcType ← NIL]; SetHost: PROCEDURE [stp: Handle, host: LONG STRING]; SetDirectory: PROCEDURE [stp: Handle, directory: LONG STRING]; SetDesiredProperties: PROCEDURE [stp: Handle, props: DesiredProperties]; Store: PROCEDURE [ stp: Handle, file: LONG STRING, stream: Stream.Handle, noteFile: NoteFileProcType ← NIL, fileType: Type ← unknown, creation: Time.Packed ← System.gmtEpoch]; -- Nop Procedures SetSSTNop: Stream.SetSSTProcedure; SendAttentionNop: Stream.SendAttentionProcedure; WaitAttentionNop: Stream.WaitAttentionProcedure; -- Signals and Errors Error: SIGNAL [ stp: Handle, code: ErrorCode, error: LONG STRING, reply: CHARACTER ← Ascii.NUL]; -- reply is the code passed from server (see STPReplyCode.mesa) ErrorCode: TYPE = { -- connection errors noSuchHost, noRouteToNetwork, noNameLookupResponse, alreadyAConnection, noConnection, connectionClosed, connectionRejected, connectionTimedOut, -- credentials errors accessDenied, illegalUserName, illegalUserPassword, illegalUserAccount, illegalConnectName, illegalConnectPassword, credentailsMissing, -- protocol errors protocolError, -- file errors illegalFileName, noSuchFile, requestRefused, -- remote stream errors accessError, -- catch all undefinedError}; ConnectionErrors: TYPE = ErrorCode[noSuchHost..connectionTimedOut]; CredentialsErrors: TYPE = ErrorCode[accessDenied..credentailsMissing]; FileErrors: TYPE = ErrorCode[illegalFileName..requestRefused]; END. -- end of STP