DIRECTORY
AlpineEnvironment USING [AccessRights, FileID, LockFailure, LockOption, NeededAccess, OpenFileID, OperationFailure, OwnerName, PageCount, PageRun, PropertyValuePair, RecoveryOption, ReferencePattern, UnknownType, UniversalFile, VolOrVolGroupID],
AlpineFile USING [allProperties, PropertySet, RESULTPageBuffer, VALUEPageBuffer],
AlpTransaction USING [Handle];
AlpFile:
CEDAR DEFINITIONS =
BEGIN
AccessRights: TYPE = AlpineEnvironment.AccessRights;
allProperties: PropertySet = AlpineFile.allProperties;
FileID: TYPE = AlpineEnvironment.FileID;
LockOption: TYPE = AlpineEnvironment.LockOption;
OpenFileID: TYPE = AlpineEnvironment.OpenFileID;
OwnerName: TYPE = AlpineEnvironment.OwnerName;
PageCount: TYPE = AlpineEnvironment.PageCount;
PageRun: TYPE = AlpineEnvironment.PageRun;
PropertySet: TYPE = AlpineFile.PropertySet;
PropertyValuePair: TYPE = AlpineEnvironment.PropertyValuePair;
RecoveryOption: TYPE = AlpineEnvironment.RecoveryOption;
ReferencePattern: TYPE = AlpineEnvironment.ReferencePattern;
RESULTPageBuffer: TYPE = AlpineFile.RESULTPageBuffer;
UniversalFile: TYPE = AlpineEnvironment.UniversalFile;
VALUEPageBuffer: TYPE = AlpineFile.VALUEPageBuffer;
VolOrVolGroupID: TYPE = AlpineEnvironment.VolOrVolGroupID;
AccessFailed: READONLY ERROR [missingAccess: AlpineEnvironment.NeededAccess];
LockFailed: READONLY ERROR [why: AlpineEnvironment.LockFailure];
OperationFailed: READONLY ERROR [why: AlpineEnvironment.OperationFailure];
StaticallyInvalid: READONLY ERROR;
Unknown: READONLY ERROR [what: AlpineEnvironment.UnknownType];
PossiblyDamaged: READONLY SIGNAL;
Handle: TYPE = REF Object;
Object:
TYPE =
RECORD[
trans: AlpTransaction.Handle,
openFileID: OpenFileID];
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].
Open: PROCEDURE[transHandle: AlpTransaction.Handle, universalFile: UniversalFile, access: AccessRights ← readOnly, lock: LockOption ← [intendRead, wait], recoveryOption: RecoveryOption ← log, referencePattern: ReferencePattern ← random] RETURNS[handle: Handle, fileID: FileID];
Create: PROCEDURE[transHandle: AlpTransaction.Handle, volumeID: VolOrVolGroupID, owner: OwnerName, initialSize: PageCount, recoveryOption: RecoveryOption ← log, referencePattern: ReferencePattern ← random] RETURNS[handle: Handle, refUniversalFile: REF UniversalFile];
Close: PROCEDURE[handle: Handle];
Delete: PROCEDURE[handle: Handle];
ReadPages: UNSAFE PROCEDURE[handle: Handle, pageRun: PageRun, pageBuffer: RESULTPageBuffer, lock: LockOption ← [read, wait]];
WritePages: PROCEDURE[handle: Handle, pageRun: PageRun, pageBuffer: VALUEPageBuffer, lock: LockOption ← [write, wait]];
ReadProperties: PROCEDURE[handle: Handle, desiredProperties: PropertySet ← allProperties, lock: LockOption ← [read, wait]] RETURNS[properties: LIST OF PropertyValuePair];
WriteProperties: PROCEDURE[handle: Handle, properties: LIST OF PropertyValuePair, lock: LockOption ← [write, wait]];
LockPages: PROCEDURE[handle: Handle, pageRun: PageRun, lock: LockOption ← [read, wait]];
UnlockPages: PROCEDURE[handle: Handle, pageRun: PageRun];
GetAccessRights: PROCEDURE[handle: Handle] RETURNS[access: AccessRights];
GetLockOption: PROCEDURE[handle: Handle] RETURNS[lock: LockOption];
SetLockOption: PROCEDURE[handle: Handle, lock: LockOption];
GetRecoveryOption: PROCEDURE[handle: Handle] RETURNS[recoveryOption: RecoveryOption];
GetReferencePattern: PROCEDURE[handle: Handle] RETURNS[referencePattern: ReferencePattern];
SetReferencePattern: PROCEDURE[handle: Handle, referencePattern: ReferencePattern];
GetSize: PROCEDURE[handle: Handle, lock: LockOption ← [read, wait]] RETURNS[size: PageCount];
SetSize: PROCEDURE[handle: Handle, size: PageCount, lock: LockOption ← [write, wait]];
GetUniversalFile: PROCEDURE[handle: Handle] RETURNS[universalFile: UniversalFile];
UnlockVersion: PROCEDURE[handle: Handle];
IncrementVersion: PROCEDURE[handle: Handle, increment: INT];
END.