OldAlpineEnvironment.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Common definitions for public Alpine interfaces
Last edited by:
MBrown on February 1, 1984 5:04:15 pm PST
Kolling on October 28, 1983 12:32 pm
Taft on April 8, 1983 5:02 pm
Hauser, March 7, 1985 2:09:45 pm PST
Carl Hauser, January 6, 1987 3:18:05 pm PST
DIRECTORY
AlpineEnvironment,
Basics USING [bytesPerWord, logBytesPerWord],
File USING [OldFP, nullOldFP, nullVolumeID, PageCount, VolumeID, wordsPerPage],
Rope USING [ROPE],
RPC USING [Conversation, Principal, ShortROPE];
OldAlpineEnvironment:
DEFINITIONS =
BEGIN OPEN AE: AlpineEnvironment;
Identification and authentication (see RPC.mesa and Lupine documentation for details)
Principal: TYPE = RPC.Principal; -- a Grapevine individual
FileStore: TYPE = Principal; -- an Alpine instance
RName: TYPE = RPC.ShortROPE; -- an arbitrary Grapevine RName
OwnerName: TYPE = RPC.ShortROPE; -- an Alpine owner, not necessarily an RName
AccessList: TYPE = LIST OF RName;
Conversation: TYPE = RPC.Conversation;
File system
VolOrVolGroupID: TYPE = File.VolumeID;
VolumeID: TYPE = AE.VolumeID;
VolumeGroupID: TYPE = AE.VolumeGroupID;
nullVolumeID: VolumeID = [File.nullVolumeID]; -- the ID of no volume
nullVolumeGroupID: VolumeGroupID = [File.nullVolumeID]; -- the ID of no volume group
FileID: TYPE = File.OldFP; -- volume-relative ID of a file
nullFileID: FileID = File.nullOldFP; -- the ID of no file
UniversalFile: TYPE = AE.UniversalFile;
nullUniversalFile: UniversalFile = [volumeID: nullVolumeID, fileID: nullFileID];
PageNumber: TYPE = INT; -- should be [0..maxPagesPerFile]
PageCount: TYPE = INT;
PageRun: TYPE = AE.PageRun;
maxPagesPerFile: INT = File.PageCount.LAST;
wordsPerPage: CARDINAL = File.wordsPerPage;
bytesPerPage: CARDINAL = wordsPerPage * Basics.bytesPerWord;
logWordsPerPage: CARDINAL = 8; -- ugh!
logBytesPerPage: CARDINAL = logWordsPerPage + Basics.logBytesPerWord;
File properties
Property:
TYPE =
AE.Property;
PropertyValuePair:
TYPE =
AE.PropertyValuePair;
ByteCount: TYPE = INT;
maxStringNameChars: CARDINAL = 100; -- max length of any string appearing in a property
FileVersion: TYPE = INT;
File access
OpenFileID: TYPE = AE.OpenFileID; -- represents a single client's access to a single file under a single transaction. Unique only within a single Alpine instance.
nullOpenFileID: OpenFileID = LOOPHOLE[LONG[0]]; -- ID of no open file
AccessRights: TYPE = AE.AccessRights;
LockMode:
TYPE = AE.LockMode [ none .. intendWrite ];
LockOption:
TYPE = AE.LockOption;
RecoveryOption: TYPE = AE.RecoveryOption;
ReferencePattern: TYPE = AE.ReferencePattern;
Owner properties
OwnerProperty: TYPE = AE.OwnerProperty;
OwnerPropertyValuePair:
TYPE =
AE.OwnerPropertyValuePair;
nullRootFile: UniversalFile = [nullVolumeID, nullFileID];
OwnerPropertySet: TYPE = PACKED ARRAY OwnerProperty OF FalseBool;
FalseBool: TYPE = BOOLEAN ← FALSE;
allOwnerProperties: OwnerPropertySet = ALL [TRUE];
Transactions
TransID: TYPE = AE.TransID; -- globally permanently unique capability for a transaction
nullTransIDRep: ARRAY [0..SIZE[TransID]) OF UNSPECIFIED = [0,0,0,0,0,0,0,0,0];
nullTransID: TransID = LOOPHOLE[nullTransIDRep]; -- ID of no transaction
Outcome: TYPE = AE.Outcome;
CommitOrAbort: TYPE = Outcome [abort .. commit];
WorkerState: TYPE = AE.WorkerState;
Error enumerations
NeededAccess: TYPE = AE.NeededAccess; -- when access is denied, indicates the access control list in which client's membership was required but not present
OperationFailure: TYPE = AE.OperationFailure;
LockFailure:
TYPE = {
conflict, -- lock cannot immediately be set because a conflicting lock is already set by another transaction
timeout}; -- lock cannot be set even after waiting a long time, perhaps due to undetected deadlock
UnknownType: TYPE = AlpineEnvironment.UnknownType;
Obsolete definition
String: TYPE = Rope.ROPE;
END.
Hauser, March 7, 1985 2:09:30 pm PST
Added copyright.