<> <> <> <> DIRECTORY IO, Process, Rope, SlackProcessTypes, ViewerClasses; SlackProcess: CEDAR DEFINITIONS = BEGIN <> <<>> <> <> <> <> <> <> <<>> QueueEntryGenerator: TYPE = SlackProcessTypes.QueueEntryGenerator; ROPE: TYPE = Rope.ROPE; SlackHandle: TYPE = SlackProcessTypes.SlackHandle; AbortProc: TYPE = PROC [data: REF]; ActionProc: TYPE = PROC [clientData: REF, inputAction: REF]; LoggingProc: TYPE = PROC [clientData: REF, inputAction: REF]; Problem: ERROR [msg: ROPE]; Create: PROC [queueSize: NAT _ 50, logSize: NAT _ 50, optimizeProc: OptimizeProc, loggingProc: LoggingProc _ NIL, abortProc: AbortProc _ NIL, abortData: REF ANY _ NIL, abortViewer: ViewerClasses.Viewer _ NIL, priority: Process.Priority _ Process.priorityNormal] RETURNS[handle: SlackHandle]; <> <<>> ChangePriority: PROC [handle: SlackHandle, priority: Process.Priority]; <> <<>> QueueAction: PROC [handle: SlackHandle, callBack: ActionProc, inputAction: REF, clientData: REF, optimizeHint: REF, priority: Process.Priority _ LAST[CARD32]]; <> <<>> QueueAtHead: PROC [handle: SlackHandle, callBack: ActionProc, inputAction: REF, clientData: REF, optimizeHint: REF, priority: Process.Priority _ LAST[CARD32]]; <> QueueIsBusy: PROC [handle: SlackHandle] RETURNS [BOOL]; <> FlushQueue: PROC [handle: SlackHandle]; <> <> <<>> <> OptimizeProc: TYPE = PROC [qeGen: QueueEntryGenerator, actionsOnQueue: NAT] RETURNS [skipActions: NAT]; <> <> GetQueueEntry: PROC [qeGen: QueueEntryGenerator, index: NAT] RETURNS [clientData: REF, optimizeHint: REF, inputAction: REF, priority: Process.Priority]; <> <<>> Restart: PROC [handle: SlackHandle]; <> <> <<>> <> <<>> EnableSessionLogging: PROC [handle: SlackHandle] RETURNS [alreadyEnabled: BOOL _ FALSE]; DisableSessionLogging: PROC [handle: SlackHandle] RETURNS [alreadyDisabled: BOOL _ FALSE]; RegisterLogger: PROC [handle: SlackHandle, loggingProc: LoggingProc] RETURNS [alreadyRegistered: BOOL _ FALSE]; <> <> <<>> <> <<>> EnableAborts: PROC [handle: SlackHandle] RETURNS [alreadyEnabled: BOOL _ FALSE]; DisableAborts: PROC [handle: SlackHandle] RETURNS [alreadyDisabled: BOOL _ FALSE]; RegisterAbortProc: PROC [handle: SlackHandle, abortProc: AbortProc _ NIL, abortData: REF ANY _ NIL, abortViewer: ViewerClasses.Viewer _ NIL] RETURNS [alreadyRegistered: BOOL _ FALSE]; <> END.