<<>> <> <> <> <> <<>> <> <<>> <> <<>> DIRECTORY MBQueue USING [Queue], Rope USING [ROPE]; WalnutRegistry: CEDAR DEFINITIONS = BEGIN WalnutState: TYPE = {unknown, initializing, active, stopped}; <> Event: TYPE = {unknown, initializing, started, stopped, mailRead, expungeComplete}; EventProc: TYPE = PROC[event: Event, clientData: REF ANY]; MsgEvent: TYPE = {firstRead, deleted, unDeleted}; MsgProc: TYPE = PROC[msgName: Rope.ROPE, event: MsgEvent, clientData: REF ANY]; MsgGroup: TYPE = ARRAY[0..MsgGroupSize) OF Rope.ROPE; MsgGroupSize: CARDINAL = 20; MsgGroupEvent: TYPE = {added, destroyed}; MsgGroupProc: TYPE = PROC[ msgGroup: REF MsgGroup, event: MsgGroupEvent, clientData: REF ANY]; MsgSetEvent: TYPE = {created, destroyed}; MsgSetProc: TYPE = PROC[msgSetName: Rope.ROPE, event: MsgSetEvent, clientData: REF ANY]; MoveProc: TYPE = PROC[ msgName: Rope.ROPE, fromMsgSet, toMsgSet: Rope.ROPE, clientData: REF ANY]; ProcSet: TYPE = RECORD[eventProc: EventProc ¬ NIL, eventProcData: REF ANY ¬ NIL, msgProc: MsgProc ¬ NIL, msgProcData: REF ANY ¬ NIL, msgGroupProc: MsgGroupProc ¬ NIL, msgGroupData: REF ANY ¬ NIL, msgSetProc: MsgSetProc ¬ NIL, msgSetData: REF ANY ¬ NIL, moveProc: MoveProc ¬ NIL, moveProcData: REF ANY ¬ NIL]; Registration: TYPE = REF; Register: PROC [procSet: ProcSet, queue: MBQueue.Queue] RETURNS[registration: Registration]; <> InvalidRegistration: ERROR; <> UnRegister: PROC [registration: Registration]; <> GetProcs: PROC[registration: Registration] RETURNS[procSet: ProcSet, queue: MBQueue.Queue]; <> <<>> CurrentWalnutState: PROC RETURNS[walnutState: WalnutState]; <> END.