-- Transport Mechanism Mail Server - public DEFS for mailboxes -- -- [Indigo]<Grapevine>MS>MailboxDefs.mesa -- Andrew Birrell September 14, 1982 2:15 pm -- DIRECTORY BodyDefs USING [ItemLength, RName, Timestamp], HeapDefs USING [ObjectNumber], ProtocolDefs USING [Handle, Remark]; MailboxDefs: DEFINITIONS = BEGIN MBXHandle: TYPE [SIZE[POINTER]]; -- Writer (single operation) -- MBXWrite: PROCEDURE [ who: BodyDefs.RName, obj: HeapDefs.ObjectNumber, postmark: BodyDefs.Timestamp] RETURNS [done: BOOLEAN]; -- Claims the mailbox, returning FALSE if this isn't -- possible, appends the item to the mailbox, -- increments the reference count on the object -- number, then frees the mailbox for others -- WaitForUnlocked: PROC; -- returns if some mailbox has been unlocked since last call of this -- -- Reader (one only per Mailbox) -- Poll: PROC [who: BodyDefs.RName] RETURNS [found: BOOLEAN]; -- determines whether there is mail for the R-Name -- Open: PROC [who: BodyDefs.RName] RETURNS [found: BOOLEAN, count: CARDINAL, mbx: MBXHandle]; -- Claims the mailbox, or returns FALSE. Count is the -- number of messages in the mailbox. -- NextMessage: PROC [mbx: MBXHandle] RETURNS [msgExists, archived, deleted: BOOLEAN]; ReadTOC: PROC [mbx: MBXHandle, text: ProtocolDefs.Remark]; InaccessibleArchive: ERROR; -- may be raised by SendBody, SendText, DeleteMessage, FlushAndClose, -- FlushCacheAndRemail, and Remail, and by Archive. SendBody: PROC [mbx: MBXHandle, str: ProtocolDefs.Handle]; -- Sends the complete body object on the given stream. SendText: PROC [ mbx: MBXHandle, sendLength: PROC [BodyDefs.ItemLength], str: UNSPECIFIED, sendBytes: PROC [UNSPECIFIED, POINTER, CARDINAL]]; -- This procedure is for the MTP server. -- If the body has a Text item, calls "sendLength", then -- make multiple calls of "sendBytes". WriteTOC: PROC [mbx: MBXHandle, text: ProtocolDefs.Remark]; DeleteMessage: PROC [mbx: MBXHandle]; FlushAndClose: PROC [mbx: MBXHandle]; Close: PROC [mbx: MBXHandle]; FlushCacheAndRemail: PROC [who: BodyDefs.RName]; Remail: PROC [who: BodyDefs.RName, valid: BOOLEAN]; Archive: PROC [who: BodyDefs.RName, keep: CARDINAL]; -- archives specified mailbox, keeping "keep" messages un-archived -- -- May raise InaccessibleArchive if all archive servers are down -- END.