<> <> <> <> <> <> <<(Changed to make consistent with new WalnutLog)>> <<(Changed NextEntryID to return a REF TEXT for the message ID, rather than a ROPE)>> <<(Took out no logging option -- log files use normal Alpine transactions always!)>> DIRECTORY GVBasics USING [RName, Timestamp], GVRetrieve USING [Handle], IO USING [STREAM], Rope USING [ROPE], ViewerTools USING [TiogaContents], WalnutKernelDefs USING [LogEntry, MsgLogEntry, LogEntryObject]; WalnutStream: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; LogEntry: TYPE = WalnutKernelDefs.LogEntry; LogEntryObject: TYPE = WalnutKernelDefs.LogEntryObject; MsgLogEntry: TYPE = WalnutKernelDefs.MsgLogEntry; <> <<>> Open: PROC[name: ROPE, readOnly: BOOL _ FALSE, pages: INT _ 200, useOldIfFound: BOOL _ FALSE, exclusive: BOOL _ FALSE] RETURNS [strm: STREAM]; <> <<>> <> Aborted: PROC [strm: STREAM] RETURNS [aborted: BOOL]; AbortStream: PROC [strm: STREAM]; FlushStream: PROC[strm: STREAM, setCreateDate: BOOL_ FALSE]; <> SetHighWaterMark: PROC[ strm: STREAM, hwmBytes: INT, numPages: INT, setCreateDate: BOOL _ FALSE]; <> SetPosition: PROC[strm: STREAM, index: INT] RETURNS[ok: BOOL]; <> ReadRope: PROC[strm: STREAM, len: INT] RETURNS[ROPE]; <> <<>> <> FindNextEntry: PROC[strm: STREAM] RETURNS[startPos: INT]; <> ReadEntry: PROC[strm: STREAM, quick: BOOL _ FALSE] RETURNS[le: LogEntry, length: INT]; <> PeekEntry: PROC[strm: STREAM] RETURNS[ident: ATOM, msgID: REF TEXT, length: INT]; <> WriteEntry: PROC[strm: STREAM, le: LogEntry, pos: INT_ -1] RETURNS[startPos: INT]; <> <> <<-- the following appear in the other log files>> logFileInfo: READONLY REF LogFileInfo LogEntryObject; createMsg: READONLY REF CreateMsg LogEntryObject; expungeMsgs: READONLY REF ExpungeMsgs LogEntryObject; writeExpungeLog: READONLY REF WriteExpungeLog LogEntryObject; createMsgSet: READONLY REF CreateMsgSet LogEntryObject; emptyMsgSet: READONLY REF EmptyMsgSet LogEntryObject; destroyMsgSet: READONLY REF DestroyMsgSet LogEntryObject; addMsg: READONLY REF AddMsg LogEntryObject; removeMsg: READONLY REF RemoveMsg LogEntryObject; moveMsg: READONLY REF MoveMsg LogEntryObject; hasbeenRead: READONLY REF HasBeenRead LogEntryObject; recordNewMailInfo: READONLY REF RecordNewMailInfo LogEntryObject; startCopyNewMail: READONLY REF StartCopyNewMail LogEntryObject; endCopyNewMailInfo: READONLY REF EndCopyNewMailInfo LogEntryObject; acceptNewMail: READONLY REF AcceptNewMail LogEntryObject; startReadArchiveFile: READONLY REF StartReadArchiveFile LogEntryObject; endReadArchiveFile: READONLY REF EndReadArchiveFile LogEntryObject; startCopyReadArchive: READONLY REF StartCopyReadArchive LogEntryObject; endCopyReadArchiveInfo: READONLY REF EndCopyReadArchiveInfo LogEntryObject; GVMsgToStream: PROC[strm: STREAM, msg: ROPE, gvH: GVRetrieve.Handle] RETURNS[ok: BOOL]; <> WriteMsgBody: PROC[strm: STREAM, body: ViewerTools.TiogaContents]; <> Overwrite: PROC[to, from: STREAM, startPos: INT, fromPos: INT_ -1]; <> <<>> CopyBytes: PROC[from, to: STREAM, num: INT]; <> MsgEntryInfoFromStream: PROC[strm: STREAM, mle: MsgLogEntry]; <> <<>> ConstructMsgID: PROC[ts: GVBasics.Timestamp, gvSender: GVBasics.RName] RETURNS[msgID: Rope.ROPE]; END.