-- WalnutDBLog.Mesa
-- Contents: types and procedures for dealing with the log information in the database
-- Last Edited by: Willie-Sue, May 18, 1983 3:03 pm

DIRECTORY
DB,
WalnutLog;

WalnutDBLog: CEDAR DEFINITIONS =

BEGIN OPEN DB, WalnutLog;

SchemaVersionTime: GreenwichMeanTime;
-- schemaVersion is time found in database

SchemaMismatch: SIGNAL[schemaVersion: GreenwichMeanTime];

walnutLogInfo: Relation; -- used to keep current info about the log file
wExpectedLength: Attribute; -- int (how long the log file is)
wExpectedDBPos: Attribute; -- int (how much of the log has been parsed into Msgs)
wStartExpungePos: Attribute; -- int (where in log file the last/current expunge started)
wCopyInProgress: Attribute; -- bool (TRUE while Copying onto tail of log file)
wSchemaVersion: Attribute; -- time (for keeping track of changes in walnut's schema)
walnutInfoRelship: Relship;  -- need fetch & check only once

-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

GetCurrentLogFile: PROC RETURNS[ROPE];
-- Retrieves name for current log file from database

-- SetCurrentLogFile: PROC[fileName: ROPE] is allowed only by Expunge

GetExpectedLogLength: PROC RETURNS[INT];
-- Retrieves last stored log length from database (used for recovery from crash)

SetExpectedLogLength: PROC[INT];
-- sets the log length in the database

SetExpectedDBLogPos: PROC[INT];
-- sets the last stored DB log position

GetExpectedDBLogPos: PROC RETURNS[INT];
-- Retrieves last stored DB log pos from database (used for recovery from crash)

GetStartExpungePos: PROC RETURNS[INT];
-- Log file position at which current/last expunge began

SetStartExpungePos: PROC[INT];
 -- set the starting position of the next expunge

GetCopyInProgress: PROC RETURNS[BOOL];
-- returns TRUE if a copy onto tail of log file is in progress

SetCopyInProgress: PROC[BOOL];
 -- set the copy in progress bit in the DB

END.