-- FTPProtError.mesa, Edit: HGM October 13, 1980 7:49 PM
-- Copyright Xerox Corporation 1979, 1980
DIRECTORY
FTPDefs,
FTPPrivateDefs;
FTPProtError: PROGRAM
IMPORTS FTPPrivateDefs
EXPORTS FTPPrivateDefs
SHARES FTPDefs =
BEGIN OPEN FTPDefs, FTPPrivateDefs;
SignalToCode: PUBLIC PROCEDURE [ftpError: FtpError] RETURNS [code: Byte] =
BEGIN
code ← SELECT ftpError FROM
-- communication errors
-- IN CommunicationError=> codeUnidentifiedPermanentError,
-- credential errors
credentialsMissing=> codeMissingUserName,
noSuchPrimaryUser=> codeIllegalUserName,
noSuchSecondaryUser=> codeIllegalConnectName,
incorrectPrimaryPassword=> codeBadUserPassword,
incorrectSecondaryPassword=> codeBadConnectPassword,
requestedAccessDenied=> codeRequestedAccessDenied,
-- file errors
illegalFilename=> codeIllegalServerFilename,
noSuchFile=> codeFileNotFound,
fileAlreadyExists=> codeFileAlreadyExists,
fileBusy=> codeFileBusy,
noRoomForFile=> codeStorageExhausted,
fileDataError=> codeFileDataError,
-- dump errors
IN DumpError=> codeFileDataError,
-- mail errors
noValidRecipients=> codeNoValidMailbox,
noSuchMailbox=> codeIllegalMailbox,
-- client errors
-- IN ClientError=> codeUnidentifiedPermanentError,
-- protocol errors
IN UndefinedFunctionError=> codeCommandUndefined,
IN ProtocolSequenceError=> codeCommandIllegal,
IN IllegalParameterListError=> codeMalformedPropertyList,
illegalFileType=> codeIllegalType,
-- IN ProtocolError=> codeUnidentifiedPermanentError,
-- internal errors
-- IN InternalError=> codeUnidentifiedPermanentError,
-- unidentified errors
unidentifiedTransientError=> codeUnidentifiedTransientError,
ENDCASE=> codeUnidentifiedPermanentError;
END;
CodeToSignal: PUBLIC PROCEDURE [code: Byte] RETURNS [ftpError: FtpError] =
BEGIN
ftpError ← SELECT code FROM
0 => unidentifiedError,
codeCommandUndefined=> functionNotImplemented,
codeMissingUserName=> credentialsMissing,
codeCommandIllegal=> illegalProtocolSequence,
codeMalformedPropertyList=> illegalProtocolParameterList,
IN [codeIllegalServerFilename..codeIllegalVersion] => illegalFilename,
codeIllegalType=> illegalFileType,
IN [codeIllegalByteSize..codeIllegalEndOfLineConvention] => illegalFileAttribute,
codeIllegalUserName=> noSuchPrimaryUser,
codeBadUserPassword=> incorrectPrimaryPassword,
codeBadUserAccount=> unidentifiedPermanentError,
codeIllegalConnectName=> noSuchSecondaryUser,
codeBadConnectPassword=> incorrectSecondaryPassword,
IN [codeIllegalCreationDate..codeIllegalAuthor] => illegalFileAttribute,
codeIllegalDevice=> illegalFilename,
codeNoValidMailbox=> noValidRecipients,
codeIllegalMailbox=> noSuchMailbox,
codeFileNotFound=> noSuchFile,
codeRequestedAccessDenied=> requestedAccessDenied,
codeTransferParametersInconsistent => illegalProtocolSequence,
codeFileDataError=> fileDataError,
codeStorageExhausted=> noRoomForFile,
-- codeDontSendFile,
-- codeStoreNotCompleted=> unidentifiedError,
codeUnidentifiedTransientError=> unidentifiedTransientError,
codeUnidentifiedPermanentError=> unidentifiedPermanentError,
codeFileBusy=> fileBusy,
codeFileAlreadyExists=> fileAlreadyExists,
ENDCASE=> unrecognizedProtocolErrorCode;
END;
RecipientErrorToExceptionCode: PUBLIC PROCEDURE [recipientError: RecipientError] RETURNS [exceptionCode: Byte] =
BEGIN
exceptionCode ← SELECT recipientError FROM
noSuchMailbox=> excpCannotLocateMailbox,
noForwardingProvided=> excpNoForwardingProvided,
unspecifiedTransientError=> excpTransientError,
unspecifiedPermanentError=> excpPermanentError,
ENDCASE=> excpUnspecifiedFailure;
END;
ExceptionCodeToRecipientError: PUBLIC PROCEDURE [exceptionCode: Byte] RETURNS [recipientError: RecipientError] =
BEGIN
IF exceptionCode ~IN [excpMinimum..excpMaximum] THEN
Abort[unrecognizedMailboxExceptionErrorCode];
recipientError ← SELECT exceptionCode FROM
-- excpUnspecifiedFailure=> unspecifiedError,
excpCannotLocateMailbox=> noSuchMailbox,
excpNoForwardingProvided=> noForwardingProvided,
excpTransientError=> unspecifiedTransientError,
excpPermanentError=> unspecifiedPermanentError,
ENDCASE=> unspecifiedError;
END;
END.. -- FTPProtError