<<>> <> <> <> <> <> <> <> <<>> DIRECTORY Feedback, FeedbackTypes, IO, Rope, SimpleFeedback; FeedbackClasses: CEDAR DEFINITIONS = BEGIN ROPE: TYPE ~ Rope.ROPE; MsgType: TYPE = SimpleFeedback.MsgType; MsgClass: TYPE = SimpleFeedback.MsgClass; MsgRouter: TYPE = REF MsgRouterObj; MsgRouterObj: TYPE = FeedbackTypes.MsgRouterObj; MsgHandler: TYPE ~ REF MsgHandlerObj; MsgHandlerObj: TYPE ~ Feedback.MsgHandlerObj; CreateHandler: PROC [ PutFL: PROC [mh: MsgHandler, msgType: MsgType, msgClass: MsgClass, format: ROPE, list: LIST OF IO.Value ¬ NIL], ClearHerald: PROC [mh: MsgHandler, msgClass: MsgClass], Blink: PROC [mh: MsgHandler, msgClass: MsgClass], data: REF ANY ¬ NIL] RETURNS [MsgHandler]; <> <> GetHandlerData: PROC [MsgHandler] RETURNS [REF ANY]; doNothing: READONLY MsgHandler; <> CreateHandlerOnRouter: PROC [MsgRouter] RETURNS [MsgHandler]; <> IsHandlerOnRouter: PROC [MsgHandler] RETURNS [is: BOOL, router: MsgRouter]; <> CreateSplittingHandler: PROC [h1, h2: MsgHandler] RETURNS [MsgHandler]; <> IsSplittingHandler: PROC [MsgHandler] RETURNS [is: BOOL, h1, h2: MsgHandler]; <> CreateHandlerOnStream: PROC [to: IO.STREAM, nlAsap: BOOL, Blink: PROC [IO.STREAM, MsgClass] ¬ NIL] RETURNS [MsgHandler]; <> SendAsciiBell: PROC [IO.STREAM, MsgClass]; <> IsHandlerOnStream: PROC [MsgHandler] RETURNS [is: BOOL, to: IO.STREAM, nlAsap: BOOL, Blink: PROC [IO.STREAM, MsgClass]]; CreateStoringHandler: PROC [buffsize: INT ¬ INT.LAST] RETURNS [MsgHandler]; <> IsStoringHandler: PROC [MsgHandler] RETURNS [is: BOOL, buffsize: INT]; GetStore: PROC [from: MsgHandler] RETURNS [msgs: LIST OF ROPE, lastIsComplete: BOOL]; <> <> PlayStore: PROC [from, to: MsgHandler, withClass: MsgClass, thenClear: BOOL]; <> handleByProblem: READONLY MsgHandler; <> CreateStreamOnRouter: PROC [msgRouter: MsgRouter, msgClass: MsgClass] RETURNS [IO.STREAM]; <> IsStreamOnRouter: PROC [IO.STREAM] RETURNS [is: BOOL, msgRouter: MsgRouter, msgClass: MsgClass]; END.