<> <> <> <> <> <> <> <> <> <> <> DIRECTORY Basics, ConstArith, Rope, YggDummyRPC, YggDummyFile; YggEnvironment: DEFINITIONS = BEGIN <> <> Principal: TYPE = Rope.ROPE; -- an individual (Grapevine, Clearinghouse, ...???) FileStore: TYPE = Principal; -- an Yggdrasil instance RName: TYPE = Rope.ROPE; -- an arbitrary Grapevine RName (or other name server) OwnerName: TYPE = Rope.ROPE; -- an Alpine owner, not necessarily an RName AccessList: TYPE = LIST OF RName; Conversation: TYPE = YggDummyRPC.Conversation; <> VolOrVolGroupID: TYPE = YggDummyFile.VolumeID; VolumeID: TYPE = RECORD [VolOrVolGroupID]; VolumeGroupID: TYPE = RECORD [VolOrVolGroupID]; nullVolumeID: VolumeID = [YggDummyFile.nullVolumeID]; -- the ID of no volume nullVolumeGroupID: VolumeGroupID = [YggDummyFile.nullVolumeID]; -- the ID of no volume group FileID: TYPE = YggDummyFile.OldFP; -- volume-relative ID of a labeled file nullFileID: FileID = YggDummyFile.nullOldFP; -- the ID of no file UniversalFile: TYPE = RECORD [ -- globally permanently unique identification of a file volumeID: VolumeID, fileID: FileID]; nullUniversalFile: UniversalFile = [volumeID: nullVolumeID, fileID: nullFileID]; PageNumber: TYPE = INT; -- should be [0..maxPagesPerFile] PageCount: TYPE = INT; PageRun: TYPE = RECORD [ firstPage: PageNumber, count: INT _ 1]; maxPagesPerFile: INT = YggDummyFile.PageCount.LAST; WordNumber: TYPE = ConstArith.Const; <> WordCount: TYPE = WordNumber; <> DeviceCharacteristics: TYPE = REF DeviceCharacteristicsRep; DeviceCharacteristicsRep: TYPE = RECORD [ wordsPerPage: CARD32, bytesPerPage: CARD32, logWordsPerPage: CARD16, logBytesPerPage: CARD16]; <> TransID: TYPE [12]; -- globally permanently unique capability for a transaction nullTransIDRep: ARRAY [0..SIZE[TransID]/SIZE[WORD]) OF UNSPECIFIED = [0,0,0]; nullTransID: TransID = LOOPHOLE[nullTransIDRep]; -- ID of no transaction Outcome: TYPE = {abort, commit, unknown}; CommitOrAbort: TYPE = Outcome [abort .. commit]; WorkerState: TYPE = {notReady, readOnlyReady, ready}; END.