-- Copyright (C) 1981, 1984 by Xerox Corporation. All rights reserved. -- PolicyDefs.mesa, Transport Mechanism Mail Server - DEFS for policy module -- -- HGM: 16-Dec-84 1:26:24 -- Randy Gobbel 19-May-81 18:43:01 -- -- Andrew Birrell September 13, 1982 3:47 pm -- -- Hankins 20-Aug-84 17:21:23 DIRECTORY Time USING [Packed]; PolicyDefs: DEFINITIONS = BEGIN -- Egg-timer -- Wait: PROC [ days: CARDINAL ← 0, hrs: [0..24) ← 0, mins: [0..60) ← 0, secs: [0..60) ← 0]; -- Returns after specified time has elapsed -- WaitUntil: PROC [time: Time.Packed]; -- Returns at the specified time -- -- Compactor scheduling strategy -- CompactorStart: PROC; -- Returns when it is appropriate for compactor to start a cycle -- CompactorPause: PROC; -- Returns after a pause suitable for the compactor between pages -- AmountOfFreeHeap: PROC [[0..100]]; -- Notifies the percentage of the heap currently empty -- GapExists: PROC; -- Notifies the fact that there is now an empty area in the heap -- -- Other Time delays -- PeriodicProcess: TYPE = {readPending, prodServers, archiver, regPurger}; PeriodicWait: PROC [process: PeriodicProcess]; Activate: PROC [process: PeriodicProcess]; ReadPendingPause: PROC = INLINE {PeriodicWait[readPending]}; ProdServersPause: PROC = INLINE {PeriodicWait[prodServers]}; ArchiverPause: PROC = INLINE {PeriodicWait[archiver]}; RegPurgerPause: PROC = INLINE {PeriodicWait[regPurger]}; -- Control of operations -- Operation: TYPE = { work, -- any form of operation -- connection, -- any form of connection -- clientInput, -- receiver accepting input from client -- serverInput, -- receiver accepting input from server -- readMail, -- client reading mail -- regExpand, -- RServer connections -- FTP, -- FTP server -- telnet, -- miscellaneous Telnet connections -- mainLine, -- main server processes -- readExpress, -- reading express-mail queue -- readInput, -- reading input queue -- readPending, -- reading pending queue -- readMailbox, -- reading locked mailbox queue -- readForward, -- reading forward queue -- remailing, -- transfering mail from inbox to input -- background, -- non-urgent background stuff -- RSReadMail, -- R-Server reading internal mail -- MSReadMail, -- M-Server reading internal mail -- archiver, -- Mailbox archiver process -- regPurger -- R-Server BTree cleanup -- }; WaitOperation: PROC [op: Operation]; -- Returns when the given operation is permissable, and notes that it is -- in progress -- CheckOperation: PROC [op: Operation, set: BOOLEAN ← TRUE] RETURNS [BOOLEAN]; -- Returns whether the given operation is permissable, and if it is -- permissable and set is true, itnotes that it is in progress -- EndOperation: PROC [op: Operation]; -- Notifies that the operation has been completed -- OpLimit: TYPE = [0..128); -- Limit on instances of operations, used in Control (below) -- Control: TYPE = RECORD [limit: OpLimit, allowed: BOOLEAN]; -- values for operation controls, below -- ReadOperationControl: PROC [op: Operation] RETURNS [Control]; -- Returns the control on the given operation -- SetOperationLimit: PROC [op: Operation, limit: OpLimit]; -- Sets the limit on the given operation -- SetOperationAllowed: PROC [op: Operation, allowed: BOOLEAN]; -- allows or disallows the given operation -- SetTelnetAllowed: PROC; -- allows everything needed for telnet connections -- ReadOperationCurrent: PROC [op: Operation] RETURNS [OpLimit]; -- returns current count for the operation -- END.