<> <> <> <> <> <> <> <> <> DIRECTORY AlpineEnvironment, AlpineLog, LogRep; LogBasic: DEFINITIONS = BEGIN VolumeID: TYPE = AlpineEnvironment.VolumeID; FileID: TYPE = AlpineEnvironment.FileID; PageNumber: TYPE = AlpineEnvironment.PageNumber; PageCount: TYPE = AlpineEnvironment.PageNumber; Block: TYPE = AlpineLog.Block; RecordID: TYPE = AlpineLog.RecordID; WordNumber: TYPE = INT; <> <> <> WordCount: TYPE = INT; <> <> <> EstablishLogFile: PROC [logVolume: VolumeID, logFile: FileID]; <> LogFileSize: PROC [] RETURNS [PageCount]; <> LogUsage: PROC [] RETURNS [PageCount]; <> LocateFirstRecord: PROC [] RETURNS [WordNumber]; <> <> <> <> <> <> <> <> <> <> <> OpenRecordStreamFromWord: PROC [firstWord: WordNumber] RETURNS [notStartOfRecord: BOOL, currentRecord: RecordID]; <> <> <> OpenRecordStreamFromCheckpoint: PROC [ checkpointWord: WordNumber, checkpointRecord, firstRecord: RecordID] RETURNS [notStartOfRecord: BOOL, currentRecord: RecordID]; <> <> <> <> InvalidPage: ERROR; <> <> CheckCurrentRecord: PROC [] RETURNS [truncated: BOOL]; <> <> <> GetCurrentRecord: PROC [currentRecord: RecordID, to: Block] RETURNS [status: AlpineLog.ReadProcStatus, wordsRead: CARDINAL]; <> <> GetCurrentPageAndVersion: PROC [] RETURNS [PageNumber, LogRep.PageVersion]; <> <> AdvanceRecordStream: PROC [] RETURNS [endOfLog, truncatedRecord: BOOL, currentRecord: RecordID]; <> <> <> <> <> <> CloseRecordStream: PROC []; <> <> <> <> <> <<(Note that OpenForPut is done implicitly by EraseLogFile.)>> <> <> <> OpenForPut: PROC [nextPage: PageNumber, version: LogRep.PageVersion, nextRecord: RecordID]; <> <> AssertNormalOperation: PROC []; <> Put: PROC [from: AlpineLog.Block, force: BOOL _ FALSE, writeID: BOOL _ FALSE] RETURNS [thisRecord, followingRecord: RecordID]; <> <> <> <> <> <> minBlockLen: INT = 1; maxBlockLen: INT = LAST[CARDINAL]; WordNumberFromRecordID: PROC [thisRecord: RecordID] RETURNS [WordNumber]; <> <> <> Force: PROC [followingRecord: RecordID]; <> <> <> RecordIDOfNextPut: PROC [] RETURNS [RecordID]; <> <> CloseForPut: PROC []; <> <> maxInvalidLogPages: PageCount = 16; <> <> <> Release: PROC [beforeRecord: RecordID]; <> <> <> <> <> Get: PROC [thisRecord: RecordID, to: AlpineLog.Block] RETURNS [status: AlpineLog.ReadProcStatus, wordsRead: CARDINAL]; <> <> <> END. CHANGE LOG Created by MBrown on 2-Dec-81 Changed by MBrown on 16-Dec-81 15:06:20 <> Changed by MBrown on 1-Feb-82 15:10:32 <> <> Changed by MBrown on August 10, 1982 11:26 pm <> Changed by MBrown on August 16, 1982 3:29 pm <> Changed by MBrown on September 16, 1982 12:42 pm <> Changed by MBrown on September 23, 1982 1:52 pm <> Changed by MBrown on June 27, 1983 9:48 am <> <> <> <> <> <<>>