-- AlpTransaction.mesa
-- Last edited by
-- Kolling on May 2, 1983 12:30 pm
DIRECTORY
AlpineEnvironment
USING[allOwnerProperties, CommitOrAbort, FileStore, LockFailure, LockOption,
NeededAccess, nullVolumeGroupID, OperationFailure, Outcome, OwnerName,
OwnerPropertySet, OwnerPropertyValuePair, PageCount, TransID, UnknownType,
VolumeID, VolumeGroupID],
AlpInstance
USING[Handle],
AlpineTransaction
USING[RequestedOutcome];
AlpTransaction: DEFINITIONS =
BEGIN
allOwnerProperties: OwnerPropertySet = AlpineEnvironment.allOwnerProperties;
FileStore: TYPE = AlpineEnvironment.FileStore;
LockOption: TYPE = AlpineEnvironment.LockOption;
nullVolumeGroupID: VolumeGroupID = AlpineEnvironment.nullVolumeGroupID;
Outcome: TYPE = AlpineEnvironment.Outcome;
OwnerName: TYPE = AlpineEnvironment.OwnerName;
OwnerPropertySet: TYPE = AlpineEnvironment.OwnerPropertySet;
OwnerPropertyValuePair: TYPE = AlpineEnvironment.OwnerPropertyValuePair;
PageCount: TYPE = AlpineEnvironment.PageCount;
RequestedOutcome: TYPE = AlpineTransaction.RequestedOutcome;
TransID: TYPE = AlpineEnvironment.TransID;
VolumeID: TYPE = AlpineEnvironment.VolumeID;
VolumeGroupID: TYPE = AlpineEnvironment.VolumeGroupID;
AccessFailed: ERROR [missingAccess: AlpineEnvironment.NeededAccess];
LockFailed: ERROR [why: AlpineEnvironment.LockFailure];
OperationFailed: ERROR [why: AlpineEnvironment.OperationFailure];
StaticallyInvalid: ERROR;
Unknown: ERROR [what: AlpineEnvironment.UnknownType];
PossiblyDamaged: SIGNAL;
Handle: TYPE = REF Object;
Object: TYPE = RECORD[inst: AlpInstance.Handle, transID: TransID];
-- in addition to the errors documented for the corresponding Alpine procedures, all of the procedures defined in this interface can also error RPC.CallFailed[RPC.CallFailure]. At the moment, Alpine ignores the transID and lock parameters for GetVolumeGroup, GetNextVolumeGroup, and GetEnclosingVolumeGroup.
Create: PROCEDURE [instHandle: AlpInstance.Handle, createLocalWorker: BOOLEAN ←
TRUE, zone: ZONE ← NIL] RETURNS [handle: Handle];
CreateWithTransID: PROCEDURE [instHandle: AlpInstance.Handle, transID: TransID,
createLocalWorker: BOOLEAN ← TRUE, zone: ZONE ← NIL] RETURNS [handle: Handle];
CreateWorker: PROCEDURE[handle: Handle, coordinator: FileStore];
Finish: PROCEDURE[handle: Handle, requestedOutcome: RequestedOutcome, continue: BOOLEAN
← FALSE] RETURNS[outcome: Outcome];
AssertAlpineWheel: PROCEDURE[handle: Handle, enable: BOOLEAN];
GetVolumeGroup: PROCEDURE[handle: Handle, volumeGroupID: VolumeGroupID, lock:
LockOption ← [none, wait]] RETURNS[volumes: LIST OF VolumeID];
GetNextVolumeGroup: PROCEDURE[handle: Handle, previousGroup: VolumeGroupID ←
nullVolumeGroupID, lock: LockOption ← [none, wait]] RETURNS[volumeGroupID:
VolumeGroupID];
GetEnclosingVolumeGroup: PROCEDURE[handle: Handle, volumeID: VolumeID, lock:
LockOption ← [none, wait]] RETURNS[volumeGroupID: VolumeGroupID];
CreateOwner: PROCEDURE[handle: Handle, volumeGroupID: VolumeGroupID, owner:
OwnerName, properties: LIST OF OwnerPropertyValuePair, enforceTotalQuota: BOOLEAN ←
FALSE] RETURNS[spaceLeftOnVolumeGroup: PageCount];
DestroyOwner: PROCEDURE[handle: Handle, volumeGroupID: VolumeGroupID, owner:
OwnerName];
ReadNextOwner: PROCEDURE[handle: Handle, volumeGroupID: VolumeGroupID,
previousOwner: OwnerName ← NIL, desiredProperties: OwnerPropertySet ← allOwnerProperties]
RETURNS[owner: OwnerName, properties: LIST OF OwnerPropertyValuePair];
ReadOwnerProperties: PROCEDURE[handle: Handle, volumeGroupID: VolumeGroupID, owner:
OwnerName, desiredProperties: OwnerPropertySet ← allOwnerProperties] RETURNS[properties:
LIST OF OwnerPropertyValuePair];
WriteOwnerProperties: PROCEDURE[handle: Handle, volumeGroupID: VolumeGroupID,
owner: OwnerName, overCommitQuotasIfNeeded: BOOLEAN ← FALSE, properties: LIST OF
OwnerPropertyValuePair];
ReadOwnerDBProperties: PROCEDURE[handle: Handle, volumeGroupID: VolumeGroupID]
RETURNS[nOwners, nEntriesUsed, nEntries: NAT, totalQuota, totalSpaceInUse,
volumeGroupSize: PageCount];
ReorganizeOwnerDB: PROCEDURE[handle: Handle, volumeGroupID: VolumeGroupID,
nEntries: NAT];
END.
Edit Log
Initial: Kolling: February 14, 1983 3:56 pm: package to aid clients, in conjunction with AlpInstance and AlpFile.