<> <> <> <> <<>> <> <<>> <> <<>> DIRECTORY MBQueue USING[Queue], Rope USING [ROPE]; WalnutRegistry: CEDAR DEFINITIONS = BEGIN WalnutState: TYPE = {unknown, active, stopped}; <> Event: TYPE = {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.