<> <> <> <> Alpine: PROGRAM 2202 VERSION 1 = BEGIN DEPENDS UPON CHName (2) VERSION 0, AlpineEnvironment (2201) VERSION 1, Authentication(14) VERSION 2; <> AccessList: TYPE = AlpineEnvironment.AccessList; AccessRights: TYPE = AlpineEnvironment.AccessRights; ByteCount: TYPE = AlpineEnvironment.ByteCount; Credentials: TYPE = Authentication.Credentials; <> <> <> <<];>> FileID: TYPE = AlpineEnvironment.FileID; FileStore: TYPE = AlpineEnvironment.FileStore; FileVersion: TYPE = AlpineEnvironment.FileVersion; LockFailure: TYPE = AlpineEnvironment.LockFailure; LockOption: TYPE = AlpineEnvironment.LockOption; NeededAccess: TYPE = AlpineEnvironment.NeededAccess; OpenFileID: TYPE = AlpineEnvironment.OpenFileID; OperationFailure: TYPE = AlpineEnvironment.OperationFailure; OwnerName: TYPE = AlpineEnvironment.OwnerName; OwnerPropertySet: TYPE = AlpineEnvironment.OwnerPropertySet; OwnerPropertyValuePair: TYPE = AlpineEnvironment.OwnerPropertyValuePair; PageCount: TYPE = AlpineEnvironment.PageCount; PageNumber: TYPE = AlpineEnvironment.PageNumber; PageRun: TYPE = AlpineEnvironment.PageRun; Property: TYPE = AlpineEnvironment.Property; PropertyValuePair: TYPE = AlpineEnvironment.PropertyValuePair; RecoveryOption: TYPE = AlpineEnvironment.RecoveryOption; ReferencePattern: TYPE = AlpineEnvironment.ReferencePattern; TransID: TYPE = AlpineEnvironment.TransID; UniversalFile: TYPE = AlpineEnvironment.UniversalFile; UnknownReason: TYPE = AlpineEnvironment.UnknownType; <> Verifier: TYPE = Authentication.Verifier; VolumeGroupID: TYPE = AlpineEnvironment.VolumeGroupID; VolOrVolGroupID: TYPE = AlpineEnvironment.VolOrVolGroupID; VolumeID: TYPE = AlpineEnvironment.VolumeID; <> <<>> FalseBool: TYPE = BOOLEAN; RESULTPageBuffer: TYPE = PageBuffer; VALUEPageBuffer: TYPE = PageBuffer; SessionToken: TYPE = ARRAY 2 OF UNSPECIFIED; Session: TYPE = RECORD [token: SessionToken, verifier: Verifier]; <> PropertySet: TYPE = AlpineEnvironment.PropertySet; <> <<>> PageBuffer: TYPE = SEQUENCE OF UNSPECIFIED; Properties: TYPE = AlpineEnvironment.Properties; <> allProperties: PropertySet = [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE]; maxPagesPerRun: CARDINAL = 255; -- LAST[CARDINAL]/AlpineEnvironment.wordsPerPage <> <> <<>> AccessFailed: ERROR [missingAccess: NeededAccess] = 0; LockFailed: ERROR [why: LockFailure] = 1; OperationFailed: ERROR [why: OperationFailure] = 2; PossiblyDamaged: ERROR = 3; StaticallyInvalid: ERROR = 4; <> Unknown: ERROR [what: UnknownReason] = 5; AuthenticationError: ERROR [problem: Authentication.Problem] = 6; <> <> <> <> <> <> <> <> <> <> <> <<};>> ConnectionError: ERROR [problem: ConnectionProblem] = 7; ConnectionProblem: TYPE = { <> noRoute(0), noResponse(1), transmissionHardware(2), transportTimeout(3), <> tooManyLocalConnections(4), tooManyRemoteConnections(5), <> missingCourier(6), missingProgram(7), missingProcedure(8), protocolMismatch(9), parameterInconsistency(10), invalidMessage(11), returnTimedOut(12), <> otherCallProblem(177777B) }; <> <> <<>> GVCredentials: TYPE = RECORD[ name: AlpineEnvironment.RName, pwd: STRING]; Logon: PROCEDURE [ service: CHName.Name, credentials: Credentials, gvCredentials: GVCredentials, verifier: Verifier ] RETURNS [ session: Session, replyVerifier: Verifier ] REPORTS [ AuthenticationError, ConnectionError ] = 0; Logoff: PROCEDURE [ session: Session ] REPORTS [ AuthenticationError, ConnectionError ] = 1; <<>> <> CreateTransaction: PROCEDURE [session: Session, createLocalWorker: BOOLEAN] RETURNS [transID: TransID, replyVerifier: Verifier] REPORTS [ AuthenticationError, AccessFailed, OperationFailed ] = 2; <> <], and is guaranteed not to raise any of the errors raised by CreateWorker.>> CreateWorker: PROCEDURE [session: Session, transID: TransID, coordinator: FileStore] RETURNS [replyVerifier: Verifier] REPORTS [ AuthenticationError, AccessFailed, Unknown ] = 3; <> <> AssertAlpineWheel: PROCEDURE [session: Session, transID: TransID, enable: BOOLEAN] RETURNS [replyVerifier: Verifier] REPORTS [ AuthenticationError, AccessFailed, OperationFailed, Unknown ] = 4; <> <> RequestedOutcome: TYPE = AlpineEnvironment.CommitOrAbort; Outcome: TYPE = AlpineEnvironment.Outcome; FinishTransaction: PROCEDURE [session: Session, transID: TransID, requestedOutcome: RequestedOutcome --{abort, commit}--, continue: BOOLEAN] RETURNS [outcome: Outcome --{abort, commit, unknown}--, newTrans: TransID, replyVerifier: Verifier] REPORTS [ AuthenticationError ] = 5; <> <> <<>> <> Open: PROCEDURE [session: Session, transID: TransID, universalFile: UniversalFile, access: AccessRights, lock: LockOption, recoveryOption: RecoveryOption, referencePattern: ReferencePattern] RETURNS [openFileID: OpenFileID, fileID: FileID, replyVerifier: Verifier] REPORTS [AccessFailed, AuthenticationError, LockFailed, OperationFailed, PossiblyDamaged, StaticallyInvalid, Unknown] = 6; <> <> <> Create: PROCEDURE [session: Session, transID: TransID, volumeID: VolOrVolGroupID, owner: OwnerName, initialSize: PageCount, recoveryOption: RecoveryOption, referencePattern: ReferencePattern] RETURNS [openFileID: OpenFileID, universalFile: UniversalFile, replyVerifier: Verifier] REPORTS [AccessFailed, AuthenticationError, OperationFailed, StaticallyInvalid, Unknown] = 7; <> <> <> <> <<>> <> <<1. The OpenFileID is no longer known to Alpine because it has been closed (either explicitly or as a result of committing or aborting the transaction).>> <<2. The file it refers to has been deleted by this transaction, perhaps using a different OpenFileID.>> Close: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, Unknown] = 8; <> <<>> Delete: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [replyVerifier: Verifier] REPORTS [AccessFailed, AuthenticationError, LockFailed, Unknown] = 9; <> <> GetUniversalFile: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [universalFile: UniversalFile, replyVerifier: Verifier] REPORTS [AuthenticationError, Unknown] = 10; GetTransID: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [transID: TransID, replyVerifier: Verifier] REPORTS [AuthenticationError, Unknown] = 11; GetAccessRights: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [access: AccessRights, replyVerifier: Verifier] REPORTS [AuthenticationError, Unknown] = 12; GetLockOption: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [lock: LockOption, replyVerifier: Verifier] REPORTS [AuthenticationError, Unknown] = 13; <> <<>> SetLockOption: PROCEDURE [session: Session, openFileID: OpenFileID, lock: LockOption] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, LockFailed, StaticallyInvalid, Unknown] = 14; <> <<>> GetRecoveryOption: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [recoveryOption: RecoveryOption, replyVerifier: Verifier] REPORTS [AuthenticationError, Unknown] = 15; GetReferencePattern: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [referencePattern: ReferencePattern, replyVerifier: Verifier] REPORTS [AuthenticationError, Unknown] = 16; SetReferencePattern: PROCEDURE [session: Session, openFileID: OpenFileID, referencePattern: ReferencePattern] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, StaticallyInvalid, Unknown] = 17; <> <> <<>> ReadPages: PROCEDURE [session: Session, openFileID: OpenFileID, pageRun: PageRun, lock: LockOption] RETURNS [pageBuffer: RESULTPageBuffer, replyVerifier: Verifier] REPORTS [AuthenticationError, OperationFailed, LockFailed, StaticallyInvalid, Unknown] = 18; <> <<>> WritePages: PROCEDURE [session: Session, openFileID: OpenFileID, pageRun: PageRun, pageBuffer: VALUEPageBuffer, lock: LockOption] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, AccessFailed, LockFailed, OperationFailed, StaticallyInvalid, Unknown] = 19; <<>> <> <<>> LockPages: PROCEDURE [session: Session, openFileID: OpenFileID, pageRun: PageRun, lock: LockOption ] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, LockFailed, StaticallyInvalid, Unknown] = 20; <<>> <> <<>> UnlockPages: PROCEDURE [session: Session, openFileID: OpenFileID, pageRun: PageRun] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, StaticallyInvalid, Unknown] = 21; <<>> <> <<>> <> ReadProperties: PROCEDURE [session: Session, openFileID: OpenFileID, desiredProperties: PropertySet, lock: LockOption] RETURNS [properties: Properties, replyVerifier: Verifier] REPORTS [AuthenticationError, LockFailed, StaticallyInvalid, Unknown] = 22; <<>> <> <<>> WriteProperties: PROCEDURE [session: Session, openFileID: OpenFileID, properties: Properties, lock: LockOption] RETURNS [replyVerifier: Verifier] REPORTS [AccessFailed, AuthenticationError, LockFailed, OperationFailed, StaticallyInvalid, Unknown] = 23; <<>> <> <> <> <<>> UnlockVersion: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [replyVerifier: Verifier] REPORTS [Unknown] = 24; <<>> <> <<>> IncrementVersion: PROCEDURE [session: Session, openFileID: OpenFileID, increment: LONG INTEGER] RETURNS [replyVerifier: Verifier] REPORTS [AccessFailed, AuthenticationError, StaticallyInvalid, Unknown] = 25; <<>> <> <<>> GetSize: PROCEDURE [session: Session, openFileID: OpenFileID, lock: LockOption] RETURNS [size: PageCount, replyVerifier: Verifier] REPORTS [AuthenticationError, LockFailed, Unknown] = 26; <<>> <> <<>> SetSize: PROCEDURE [session: Session, openFileID: OpenFileID, size: PageCount, lock: LockOption] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, AccessFailed, LockFailed, OperationFailed, StaticallyInvalid, Unknown] = 27; <<>> <> <> <> UnlockFile: PROCEDURE [session: Session, openFileID: OpenFileID] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, StaticallyInvalid, Unknown] = 28; <<>> <> <<>> <> <> <> OwnerProperties: TYPE = AlpineEnvironment.OwnerProperties; ReadOwnerProperties: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID, owner: OwnerName, desiredProperties: OwnerPropertySet ] RETURNS [properties: OwnerProperties, replyVerifier: Verifier] REPORTS [AuthenticationError, LockFailed, StaticallyInvalid, Unknown] = 29; <> <> WriteOwnerProperties: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID, owner: OwnerName, properties: OwnerProperties, enforceTotalQuota: BOOLEAN] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, AccessFailed, LockFailed, OperationFailed, StaticallyInvalid, Unknown] = 30; <> <> <> <> <> <> <<>> <> CreateOwner: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID, owner: OwnerName, properties: OwnerProperties, enforceTotalQuota: BOOLEAN] RETURNS [spaceLeftOnVolumeGroup: PageCount, replyVerifier: Verifier] REPORTS [AuthenticationError, AccessFailed, LockFailed, OperationFailed, StaticallyInvalid, Unknown] = 31; <> <> DestroyOwner: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID, owner: OwnerName] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, AccessFailed, LockFailed, OperationFailed, StaticallyInvalid, Unknown] = 31; <> <> NextOwner: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID, previousOwner: OwnerName, desiredProperties: OwnerPropertySet] RETURNS [owner: OwnerName, properties: OwnerProperties, replyVerifier: Verifier] REPORTS [AuthenticationError, AccessFailed, LockFailed, StaticallyInvalid, Unknown] = 32; <> <> ReadOwnerDBProperties: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID] RETURNS [nOwners, nEntriesUsed, nEntries: LONG INTEGER, totalQuota, totalSpaceInUse, volumeGroupSize: PageCount, replyVerifier: Verifier] REPORTS [AuthenticationError, AccessFailed, LockFailed, Unknown] = 33; <> <> <<>> <> ReorganizeOwnerDB: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID, nEntries: LONG INTEGER] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, AccessFailed, LockFailed, OperationFailed, Unknown] = 34; <> <> UnlockOwnerDB: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID] RETURNS [replyVerifier: Verifier] REPORTS [AuthenticationError, StaticallyInvalid, Unknown] = 35; <> <> <<>> <> GetNextGroup: PROCEDURE [session: Session, transID: TransID, previousGroup: VolumeGroupID, lock: LockOption] RETURNS [volumeGroupID: VolumeGroupID, replyVerifier: Verifier] REPORTS[AuthenticationError, Unknown] = 36; <> <> <> VolumeIDs: TYPE = AlpineEnvironment.VolumeIDs; GetGroup: PROCEDURE [session: Session, transID: TransID, volumeGroupID: VolumeGroupID, lock: LockOption] RETURNS [volumes: VolumeIDs, replyVerifier: Verifier] REPORTS[AuthenticationError, Unknown] = 37; <> <> GetEnclosingGroup: PROCEDURE [session: Session, transID: TransID, volumeID: VolumeID, lock: LockOption] RETURNS [volumeGroupID: VolumeGroupID, replyVerifier: Verifier] REPORTS[AuthenticationError, Unknown] = 38; <> <> <<>> END. <<>>