-- Transport Mechanism Mail Server - DEFS for policy module --
-- [Juniper]<Grapevine>MS>PolicyDefs.mesa
-- Randy Gobbel 19-May-81 18:43:01 --
-- Andrew Birrell September 13, 1982 3:47 pm --
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] };
ExpressAllowed: PROC[inputLength: CARDINAL] RETURNS[BOOLEAN];
SetExpressThreshold: PROC[CARDINAL];
-- 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 --
lily, -- Lily connections --
MTP, -- MTP server --
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 ] RETURNS[ BOOLEAN ];
-- Returns whether the given operation is permissable, and if it is
-- permissable notes 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.