DIRECTORY Process, SlackProcess, ViewerClasses; SlackProcessConcreteTypes: CEDAR DEFINITIONS = BEGIN AbortProc: TYPE = SlackProcess.AbortProc; ActionProc: TYPE = SlackProcess.ActionProc; LoggingProc: TYPE = SlackProcess.LoggingProc; OptimizeProc: TYPE = SlackProcess.OptimizeProc; SlackHandleObj: TYPE = MONITORED RECORD [ slackProcess: PROCESS, queue: Queue, qeGen: QueueEntryGenerator, -- so we don't have to reallocate the storage each time optimizeProc: OptimizeProc, log: Log, abort: Abort, priority: Process.Priority _ Process.priorityNormal, pauseRequest: BOOL _ FALSE, paused: CONDITION, timedPaused: CONDITION ]; Queue: TYPE = REF QueueData; QueueData: TYPE = RECORD [ notFull: CONDITION, timedNotFull: CONDITION, head: NAT _ 0, tail: NAT _ 0, size: NAT _ 0, clientDatas: ClientDatas _ NIL, optimizeHints: OptimizeHints _ NIL, actions: Actions _ NIL, actionProcs: ActionProcs _ NIL, events: QueueEvents ]; QueueEvents: TYPE = REF QueueEventsData; QueueEventsData: TYPE = RECORD [SEQUENCE len: NAT OF Event]; -- eventually all the sequences should be merged into this one, by adding fields Event: TYPE = RECORD [ priority: Process.Priority, readOnly: BOOL _ FALSE ]; ClientDatas: TYPE = REF ClientDatasData; ClientDatasData: TYPE = RECORD [SEQUENCE len: NAT OF REF]; OptimizeHints: TYPE = REF OptimizeHintsData; OptimizeHintsData: TYPE = RECORD [SEQUENCE len: NAT OF REF]; Actions: TYPE = REF ActionsData; ActionsData: TYPE = RECORD [SEQUENCE len: NAT OF REF]; ActionProcs: TYPE = REF ActionProcsData; ActionProcsData: TYPE = RECORD [SEQUENCE len: NAT OF ActionProc]; Log: TYPE = REF LogData; LogData: TYPE = RECORD[ head: NAT _ 0, size: NAT _ 0, loggerEnabled: BOOL _ FALSE, logger: LoggingProc _ NIL, received: Received, -- received an action versus performed an action. bashed: Bashed, -- bashed an action versus performed an action. events: Events ]; Received: TYPE = REF ReceivedData; ReceivedData: TYPE = RECORD[SEQUENCE len: NAT OF BOOL]; Bashed: TYPE = REF BashedData; BashedData: TYPE = RECORD[SEQUENCE len: NAT OF BOOL]; Events: TYPE = REF EventsData; EventsData: TYPE = RECORD[SEQUENCE len: NAT OF REF]; Abort: TYPE = REF AbortData; AbortData: TYPE = RECORD [ enabled: BOOL _ FALSE, proc: AbortProc, viewer: ViewerClasses.Viewer, data: REF ]; QueueEntryGenerator: TYPE = REF QueueEntryGeneratorObj; QueueEntryGeneratorObj: TYPE = RECORD [ queue: Queue, actionsInQueue: NAT ]; END. R SlackProcessConcreteTypes.mesa Copyright c 1990 by Xerox Corporation. All rights reserved. Bier, April 3, 1991 4:55 pm PST Contents: The truth of the data structures used by SlackProcess. priorities: Priorities _ NIL, Priorities: TYPE = REF PrioritiesData; PrioritiesData: TYPE = RECORD [SEQUENCE len: NAT OF Process.Priority]; Κp•NewlineDelimiter ™IcodešΟcœ™Kšœ Οmœ1™