-- 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: BOOLEANTRUE, 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: BOOLEANFALSE, 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.