<<>> <> <> <> <> <> <> <<>> DIRECTORY Rope USING [ROPE], MailBasics USING [ItemType, RName, RNameList], MailUtils USING [Credentials]; MailSend: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; <> SendingCredentialsList: TYPE = LIST OF SendingCredentials; SendingCredentials: TYPE = REF SendingCredentialsRec; SendingCredentialsRec: TYPE = RECORD [ credentials: MailUtils.Credentials, authenticated: BOOL ¬ FALSE, returnTo: MailBasics.RName ]; nullCredentials: SendingCredentials = NIL; MailSendHandle: TYPE = REF MailSendHandleObject; MailSendHandleObject: TYPE ~ RECORD [ credentialsList: SendingCredentialsList, recipients: MailBasics.RNameList, lastRecipient: MailBasics.RNameList, bodyParts: LIST OF BodyPartInfo, lastBodyPart: LIST OF BodyPartInfo, nBodyParts: CARDINAL ¬ 0 ]; BodyPartInfo: TYPE = REF BodyPartInfoObject; BodyPartInfoObject: TYPE = RECORD [ type: MailBasics.ItemType, data: ROPE ¬ NIL ]; MailSendProcsRef: TYPE = REF MailSendProcs; MailSendProcs: TYPE = RECORD [ which: ATOM, Send: PROC[msH: MailSendHandle, validate, sendEvenIfInvalidNames: BOOL] RETURNS [sent: BOOL, failureReason: ROPE, invalidNames: MailBasics.RNameList] ]; Create: PROC RETURNS [msH: MailSendHandle]; <> <> <> <> <> <> StartSend: PROC [msH: MailSendHandle, credentialsList: SendingCredentialsList]; <> <> <> AddRecipient: PROC [msH: MailSendHandle, recipient: MailBasics.RName]; <> StartItem: PROC [msH: MailSendHandle, type: MailBasics.ItemType]; <> AddToItem: PROC [msH: MailSendHandle, buffer: ROPE]; <> Send: PROC [msH: MailSendHandle, validate, sendEvenIfInvalidNames: BOOL, transport: ATOM ¬ $any] RETURNS [sent: BOOL, failureReason: ROPE, invalidNames: MailBasics.RNameList]; <> <> <> <> <> <> <> <> <> Abort: PROC [msH: MailSendHandle]; <> <<>> RegisterMailSendProcs: PROC[newProcs: MailSendProcsRef]; GetRegisteredSendProcsList: PROC RETURNS[LIST OF MailSendProcsRef]; <> <<>> GetRegisteredMailSendProcs: PROC[which: ATOM] RETURNS[MailSendProcsRef]; <<>> END.