<> <> <> <<>> <> <> <> <<>> DIRECTORY LoganBerry USING [Entry], Rope USING [ROPE], TapMsgQueue USING [Msg, MsgQueue] ; TapFilter: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; Msg: TYPE ~ TapMsgQueue.Msg; MsgQueue: TYPE ~ TapMsgQueue.MsgQueue; Annotation: TYPE ~ LoganBerry.Entry; Query: TYPE ~ ROPE; Agent: TYPE ~ REF; <> Error: ERROR [ec: ATOM, explanation: ROPE _ NIL]; FilterInfo: TYPE ~ RECORD[filterName, user: ROPE, query: Query, annot: Annotation]; <> <> CreateAgent: PROC [feeder: MsgQueue, filterDB: ROPE, user: ROPE, annotDB: ROPE] RETURNS [agent: Agent]; <> <<>> WakeupAgent: PROC [agent: Agent] RETURNS []; <> <<>> IsAgentIdle: PROC [agent: Agent, wait: BOOLEAN _ FALSE] RETURNS [idle: BOOLEAN]; <> <<>> MonitorProc: TYPE ~ PROC [msgID: ROPE, msg: Msg, filterID: ROPE, annot: Annotation] RETURNS [doIt: BOOLEAN _ TRUE]; MonitorAgent: PROC [agent: Agent, proc: MonitorProc] RETURNS []; <> <<>> TerminateAgent: PROC [agent: Agent] RETURNS []; <> <<>> <> <> AddFilter: PROC [filterDB: ROPE, user: ROPE, filterName: ROPE, query: Query, annot: Annotation, agent: Agent _ NIL] RETURNS [filterID: ROPE]; <> <<>> DeleteFilter: PROC [filterDB: ROPE, filterID: ROPE, agent: Agent _ NIL] RETURNS []; <> <<>> LookupFilter: PROC [filterDB: ROPE, filterID: ROPE] RETURNS [filterName, user: ROPE, query: Query, annot: Annotation]; <> <<>> LookupAllFilters: PROC [filterDB: ROPE] RETURNS [LIST OF FilterInfo]; <> <<>> ExistsFilter: PROC [filterDB: ROPE, filterID: ROPE] RETURNS [BOOLEAN]; <<>> <> <> <<>> AnnotateMsg: PROC [annotDB: ROPE, msgID: ROPE, filterID: ROPE, annot: Annotation] RETURNS [annotID: ROPE]; <> <<>> GetAnnotations: PROC [annotDB: ROPE, msgID: ROPE] RETURNS [annot: Annotation]; <> <<>> <> ParseMsgIntoFields: PROC [msgtext: ROPE] RETURNS [msg: Msg]; <> <<>> END.