<> <> <> <> <<>> DIRECTORY MBQueue USING [ Queue ], MBQueuePrivate USING [ Event ] ; MBQueueExtras: CEDAR DEFINITIONS = { <> <<>> Model: TYPE = { pushModel, pullModel }; Event: TYPE = MBQueuePrivate.Event; <<>> IsEmpty: PROC[q: MBQueue.Queue] RETURNS [empty: BOOL]; <> InsertClientAction: PROC [q: MBQueue.Queue, proc: PROC [REF ANY], data: REF ANY]; <> <> <<>> ChangeModel: PROC[q: MBQueue.Queue, model: Model]; <<$pushModel: set state and create process if the queue is non-empty and there isn't one.>> <<$pullModel: set state; any existing process will disappear the next time it awakens.>> }. <<>>