<<>> <> <> <> <<>> <> DIRECTORY BasicTime USING [GMT], IO USING [STREAM, Value], Rope USING [ROPE], ViewerTools USING [TiogaContents], WalnutDefs USING [CheckReportProc, WalnutOpsHandle], WalnutKernelDefs USING [LogEntry, WhichTempLog], WalnutRoot USING [InternalLogInfo]; WalnutLog: CEDAR DEFINITIONS = BEGIN <<>> <> GMT: TYPE = BasicTime.GMT; ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; LogEntry: TYPE = WalnutKernelDefs.LogEntry; WhichTempLog: TYPE = WalnutKernelDefs.WhichTempLog; CheckReportProc: TYPE = WalnutDefs.CheckReportProc; WalnutOpsHandle: TYPE = WalnutDefs.WalnutOpsHandle; InternalLogInfo: TYPE = WalnutRoot.InternalLogInfo; TiogaContents: TYPE = ViewerTools.TiogaContents; LogHandle: TYPE = REF LogHandleRec; LogHandleRec: TYPE = RECORD[ scanning: BOOL ¬ FALSE, strm: STREAM, scanningLog: InternalLogInfo, -- for logical start and end; also for lastLog entryLengthHint: INT ¬ -1, entryPos: INT ¬ -1 ]; <> ExpungeMsgs: PROC[opsH: WalnutOpsHandle] RETURNS[at, next: INT]; WriteExpungeLog: PROC[opsH: WalnutOpsHandle] RETURNS[at, next: INT]; <<>> CreateMsgSet: PROC[opsH: WalnutOpsHandle, name: ROPE] RETURNS[at, next: INT]; EmptyMsgSet: PROC[opsH: WalnutOpsHandle, msgSet: ROPE] RETURNS[at, next: INT]; DestroyMsgSet: PROC[opsH: WalnutOpsHandle, msgSet: ROPE] RETURNS[at, next: INT]; AddMsg: PROC[opsH: WalnutOpsHandle, msg: ROPE, to: ROPE] RETURNS[at, next: INT]; RemoveMsg: PROC[opsH: WalnutOpsHandle, msg: ROPE, from: ROPE] RETURNS[at, next: INT]; MoveMsg: PROC[opsH: WalnutOpsHandle, msg: ROPE, from, to: ROPE] RETURNS[at, next: INT]; HasBeenRead: PROC[opsH: WalnutOpsHandle, msg: ROPE] RETURNS[at, next: INT]; RecordNewMailInfo: PROC[opsH: WalnutOpsHandle, logLen: INT, when: GMT, server: ROPE, num: INT] RETURNS[at, next: INT]; StartCopyNewMail: PROC[opsH: WalnutOpsHandle] RETURNS[at, next: INT]; -- endCopy written by WalnutLogImpl AcceptNewMail: PROC[opsH: WalnutOpsHandle] RETURNS[at, next: INT]; StartReadArchiveFile: PROC[opsH: WalnutOpsHandle, file: ROPE, msgSet: ROPE] RETURNS[at, next: INT]; EndReadArchiveFile: PROC[opsH: WalnutOpsHandle] RETURNS[at, next: INT]; StartCopyReadArchive: PROC[opsH: WalnutOpsHandle] RETURNS[at, next: INT]; -- endCopy written by WalnutLogImpl <<>> <> WriteMessage: PROC [opsH: WalnutOpsHandle, msg: ROPE, body: TiogaContents] RETURNS[at: INT]; <> <<>> <> SetPosition: PROC[opsH: WalnutOpsHandle, startPos: INT] RETURNS[charsSkipped: INT]; <> SetIndex: PROC[opsH: WalnutOpsHandle, pos: INT]; <> NextAt: PROC[opsH: WalnutOpsHandle] RETURNS[at: INT]; <> NextEntry: PROC[opsH: WalnutOpsHandle] RETURNS[le: LogEntry, at: INT]; <> <<>> <> <<>> QuickScan: PUBLIC PROC[opsH: WalnutOpsHandle] RETURNS[le: LogEntry, at: INT]; <> <<>> ArchiveEntry: PUBLIC PROC[opsH: WalnutOpsHandle, to: STREAM] RETURNS[ok: BOOL]; <> <<>> CopyBytesToArchive: PROC[opsH: WalnutOpsHandle, to: STREAM, startPos, num: INT]; <> <<>> <> InitLogStream: PROC[opsH: WalnutOpsHandle] RETURNS[ok: BOOL]; <> LogLength: PROC[opsH: WalnutOpsHandle] RETURNS[length: INT]; <> <<>> OpenLogStreams: PROC[opsH: WalnutOpsHandle]; ReleaseWriteLock: PROC[opsH: WalnutOpsHandle]; <> <<>> ResetLog: PUBLIC PROC[opsH: WalnutOpsHandle, newLength: INT]; <> ForgetLogStreams: PROC[opsH: WalnutOpsHandle]; <> <<>> ShutdownLog: PROC[opsH: WalnutOpsHandle]; <> <<>> <<>> <> PrepareToCopyTempLog: PROC[ opsH: WalnutOpsHandle, which: WhichTempLog, pagesAlreadyCopied: INT, reportProc: CheckReportProc] RETURNS[ok: BOOL]; <> <<>> CopyTempLog: PROC[opsH: WalnutOpsHandle, which: WhichTempLog, startCopyPos, fromPos: INT, reportProc: CheckReportProc ]; <> FinishTempLogCopy: PROC[opsH: WalnutOpsHandle, which: WhichTempLog]; <> CreateArchiveLog: PROC[ opsH: WalnutOpsHandle, fileToRead: STREAM, msgSet: ROPE, reportProc: CheckReportProc] RETURNS[ok: BOOL]; <> <<>> <> GetTiogaContents: PROC[opsH: WalnutOpsHandle, textStart, textLen, formatLen: INT] RETURNS[contents: TiogaContents]; <> <<>> GetRefTextFromLog: PROC[opsH: WalnutOpsHandle, startPos, length: INT, text: REF TEXT]; <> <<>> END.