<> <> <> <> <> <> DIRECTORY BasicTime USING [GMT], Rope USING [ROPE], IO USING [STREAM]; SMTPDescr: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; STREAM: TYPE = IO.STREAM; Descr: TYPE = REF DescrRep; DescrRep: TYPE; Format: TYPE = {gv, arpa}; Create: PROC [ arpaReversePath: ROPE _ NIL, gvSender: ROPE _ NIL, rawRecipients: LIST OF ROPE, source: ROPE _ NIL, format: Format, msgStream: STREAM, precedeMsgText: ROPE _ NIL, returnPathLine: ROPE _ NIL] RETURNS [Descr]; <> GetUserHandle: PROC [self: Descr] RETURNS [INT]; GetFileName: PROC [self: Descr] RETURNS [ROPE]; -- should be called only by SMTPQueue.DeleteFromAll GetExpiryDate: PROC [self: Descr] RETURNS [BasicTime.GMT]; GetArpaReversePath: PROC [self: Descr] RETURNS [path: ROPE]; SetArpaReversePath: PROC [self: Descr, path: ROPE]; GetGvSender: PROC [self: Descr] RETURNS [rName: ROPE]; SetGvSender: PROC [self: Descr, rName: ROPE]; GetSource: PROC [self: Descr] RETURNS [ROPE]; EnumerateRawRecipients: PROC [self: Descr, proc: RawRecipProc, procData: REF ANY _ NIL]; <> RawRecipProc: TYPE = PROC [rawRecipient: ROPE, procData: REF ANY] RETURNS [continue: BOOL _ TRUE]; <> RemoveRawRecipients: PROC [self: Descr]; <> <> AddProcessedRecipient: PROC [self: Descr, hostName: ROPE, userName: ROPE, checkDuplicate: BOOL]; <> RemoveRecipientHost: PROC [self: Descr, hostName: ROPE]; <> <> EnumerateRecipientHosts: PROC [self: Descr, proc: HostProc, procData: REF ANY _ NIL]; <> <> HostProc: TYPE = PROC [hostName: ROPE, userNames: LIST OF ROPE, procData: REF ANY] RETURNS [continue: BOOL _ TRUE]; MoreRecipients: PROC [self: Descr] RETURNS [BOOL]; <> StoreItemInfo: PROC [descr: Descr]; <> GetFormat: PROC [self: Descr] RETURNS [Format]; <> GetPrecedeMsgText: PROC [self: Descr] RETURNS [ROPE]; <> SetPrecedeMsgText: PROC [self: Descr, new: ROPE]; GetReturnPathLine: PROC [self: Descr] RETURNS [ROPE]; <> RetrieveMsgStream: PROC [self: Descr] RETURNS [STREAM]; <> <> UniqueID: PROC [self: Descr] RETURNS [rope: ROPE]; Destroy: PROC [self: Descr]; <> Print: PROC [descr: Descr, out: STREAM, form: PrintForm _ long]; <> Unparse: PROC [descr: Descr, form: PrintForm _ short] RETURNS [ROPE]; <> PrintForm: TYPE = {short, long}; CopyForReturn: PROC [old: Descr, reason: ROPE] RETURNS [new: Descr]; <> <> ReadItemFile: PROC [fileName: ROPE] RETURNS [Descr]; <> <> Failed: ERROR [reason: ROPE]; EnumerateInitialItems: PROC [proc: InitialItemProc]; <> InitialItemProc: TYPE = PROC [descr: Descr]; CreateFailed, WrongState, PutOnBadQueue: ERROR; END.