SELECT type: *
FROM
LogFileInfo => [
-- change this name each time the format changes
key: ROPE ¬ NIL,
internalFileID: INT,
logSeqNo: INT
],
CreateMsg => [
msg: ROPE ¬ NIL,
date: BasicTime.GMT ¬ BasicTime.nullGMT,
show: BOOL, -- to distinguish new grapevine mail
sender,
from,
subject,
to,
cc: ROPE ¬ NIL,
entryStart: INT ¬ 0, -- the position of the entry in the log
textOffset: INT ¬ 0, -- the offset of the first char of the message header
textLen: INT ¬ 0, -- the length of the text (chars)
formatLen: INT ¬ 0, -- the length of the formatting information
headersLen: INT ¬ 0 -- the length of the headers information
],
WriteExpungeLog => [ internalFileID:
INT ],
CreateMsgSet => [ msgSet: ROPE ¬ NIL ],
DestroyMsgSet => [ msgSet: ROPE ¬ NIL ],
EmptyMsgSet => [ msgSet:
ROPE ¬
NIL ],
HasBeenRead => [ msg:
ROPE ¬
NIL ],
AddMsg => [ msg:
ROPE ¬
NIL, to:
ROPE ¬
NIL],
RemoveMsg => [ msg:
ROPE ¬
NIL, from:
ROPE ¬
NIL],
MoveMsg => [
msg: ROPE ¬ NIL,
from: ROPE ¬ NIL,
to: ROPE ¬ NIL
],
RecordNewMailInfo => [
logLen: INT,
when: BasicTime.GMT,
server: ROPE ¬ NIL,
num: INT
],
StartCopyNewMail => NULL,
EndCopyNewMailInfo => [ startCopyPos: INT ],
AcceptNewMail => NULL,
StartReadArchiveFile => [ file: ROPE ¬ NIL, msgSet: ROPE ¬ NIL],
EndReadArchiveFile => NULL,
StartCopyReadArchive => NULL,
EndCopyReadArchiveInfo => [ startCopyPos: INT ],
EndOfLog => [length:
INT],
-- need not be a "real" entry
the end of the log - returned by WalnutStream
ENDCASE ];