DIRECTORY AccessControlPrivate USING[PntrDataRec, PntrHeaderRec, RecNumber], AlpineEnvironment USING[LockMode, OpenFileID, OwnerName, PageCount, PageRun, ReferencePattern, TransID, UniversalFile]; AccessControlFile: CEDAR DEFINITIONS = BEGIN RecNumber: TYPE = AccessControlPrivate.RecNumber; -- we really own the def of this, but it has to live in AccessControlPrivate to avoid circularity. FirstDataRecNum: RecNumber; PagesPerRec: CARDINAL; WordsPerRec: CARDINAL; LockConflict: ERROR [lockItem: LockItem]; -- signalled by various read routines. LockItem: TYPE = RECORD[ mode: AlpineEnvironment.LockMode, whatToLock: SELECT what: {file, pageRun} FROM file => [transID: AlpineEnvironment.TransID, universalFile: AlpineEnvironment.UniversalFile, refPattern: AlpineEnvironment.ReferencePattern], pageRun => [openFileID: AlpineEnvironment.OpenFileID, pageRun: AlpineEnvironment.PageRun], ENDCASE]; ReadHeaderRec: PROCEDURE[ownerOpenFileID: AlpineEnvironment.OpenFileID, recLockMode: AlpineEnvironment.LockMode, pntrHeaderRec: AccessControlPrivate.PntrHeaderRec]; ReadDataRec: PROCEDURE[ownerOpenFileID: AlpineEnvironment.OpenFileID, ownerName: AlpineEnvironment.OwnerName, desiredState: WantOwnerOrEmpty, recLockMode: AlpineEnvironment.LockMode, pntrDataRec: AccessControlPrivate.PntrDataRec, lastDataRecNum: RecNumber] RETURNS [dataRecNum: RecNumber, reclaimedRec: BOOLEAN]; WantOwnerOrEmpty: TYPE = {wantEmpty, wantOwner}; ReadDataRecViaRecNum: PROCEDURE[ownerOpenFileID: AlpineEnvironment.OpenFileID, dataRecNum: RecNumber, recLockMode: AlpineEnvironment.LockMode, pntrDataRec: AccessControlPrivate.PntrDataRec, lastDataRecNum: RecNumber]; OutOfRecNumRange: ERROR; UnlockDataRecViaRecNum: PROCEDURE[ownerOpenFileID: AlpineEnvironment.OpenFileID, dataRecNum: RecNumber, lastDataRecNum: RecNumber]; LockFileOrPageRun: PROCEDURE[lockItem: LockItem]; WriteHeaderRec: PROCEDURE[ownerOpenFileID: AlpineEnvironment.OpenFileID, pntrHeaderRec: AccessControlPrivate.PntrHeaderRec]; WriteDataRec: PROCEDURE[ownerOpenFileID: AlpineEnvironment.OpenFileID, dataRecNum: RecNumber, pntrDataRec: AccessControlPrivate.PntrDataRec]; GetNextDataRecNumber: PROCEDURE[prevDataRecNum, lastDataRecNum: RecNumber, whatToDo: StopOrWrap, wrapDataRecNumber: RecNumber] RETURNS [nextDataRecNum: RecNumber]; StopOrWrap: TYPE = {stopOnEof, wrapOnEof}; Stopped: ERROR; Wrapped: ERROR; ComputeLastDataRecNumberFromFileLength: PROCEDURE [length: AlpineEnvironment.PageCount] RETURNS [lastDataRecNum: RecNumber]; LengthToSetOwnerFile: PROCEDURE[totalEntries: CARDINAL] RETURNS [length: AlpineEnvironment.PageCount]; StartAccessControlFile: PROCEDURE; END. Edit Log Initial: Kolling: 29-Oct-81 13:21:18: defs file private to AccessControl; interface to the owner files. Hauser:March 7, 1985: Nodified, added copyright. dAccessControlFile.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Last edited by Kolling on May 27, 1983 4:22 pm - read the header record. non system-fatal errors: ACF.LockConflict, AC.Unknown[openFileID, transID]. read an owner record, given an owner name. non system-fatal errors: ACF.LockConflict, AC.OperationFailed[duplicateOwner, ownerDatabaseFull], AC.StaticallyInvalid (badLengthName), AC.Unknown[openFileID, owner, transID]. read an owner record, given a logical record number. (Used at phase one (write mode) and enumeration (read mode).) non system-fatal errors: OutOfRecNumRange, ACF.LockConflict, AC.Unknown[openFileID, transID]. unlock a data record. non system-fatal errors: non system-fatal errors: OutOfRecNumRange, AC.Unknown[openFileID, transID]. lock a file or a page run. non system-fatal errors: AC.LockFailed[timeout], AC.Unknown[transID]. write the header record. non system-fatal errors: AC.Unknown[openFileID, transID]. write an owner record. non system-fatal errors: AC.Unknown[openFileID, transID]. given a logical record number, return the "next" logical record number. non system-fatal errors: non system-fatal errors: ACF.Stopped, ACF.Wrapped. for use only by the "heavies" like InitAndRegisterVolumeGroup or ReorganizeVolumeGroup; not needed by normal routines. non system-fatal errors: none. non system-fatal errors: none. Κc˜J˜J˜šœ™Icodešœ Οmœ1™J˜—Jšžœ˜ J˜J˜——Jšœ™J˜šΟn œž œ/˜GJ˜7˜$JšœK™KJ˜——Jšœ*™*J˜š  œž œ:˜PJ˜IJ˜Kšœžœ'žœ˜RJšœ―™―—šœžœ˜0J˜J˜——Jšœ4™4Jšœ=™=J˜š œž œ/˜NJ˜L˜=Jšœ]™]—šœžœ˜˜J˜J˜———Jšœ™J˜š œž œ/˜P˜2Jšœd™dJ˜J˜——Jšœ™J˜š œž œ˜1JšœE™EJ˜J˜J˜—Jšœ™J˜š œž œ/˜H˜3Jšœ9™9J˜J˜——Jšœ™J˜š  œž œ/˜F˜FJšœ9™9J˜J˜J˜——JšœG™GJ˜š œž œ+˜JJšœ4žœ˜L˜ JšœK™K—Jšœ žœ˜*Jšœ žœ˜šœ žœ˜˜J˜J˜———Jšœv™vJ˜š &œž œ ˜:šœžœ˜AJšœ™J˜J˜——š œž œžœžœ ˜H˜Jšœ™J˜J˜J˜——Jš œž œ˜"J˜J˜J˜Jšžœ˜˜J˜J˜—J˜gJ˜0J˜J˜J˜J˜J˜—…— α