<> <> <> <> <> DIRECTORY Commander USING [CommandProc, Register], IO USING [STREAM], TypeScript USING [ChangeLooks], ViewerEvents USING [EventProc, RegisterEventProc], ViewerIO USING [CreateViewerStreams, GetViewerFromStream, Viewer], ArpaTCPLogging USING [logFile]; ArpaTCPWatcher: CEDAR PROGRAM IMPORTS Commander, TypeScript, ViewerEvents, ViewerIO, ArpaTCPLogging = BEGIN StartWatcher: Commander.CommandProc = { <<[cmd: Commander.Handle] RETURNS [result: REF ANY _ NIL, msg: ROPE _ NIL]>> out: IO.STREAM; viewer: ViewerIO.Viewer; IF ArpaTCPLogging.logFile#NIL THEN RETURN[msg: "ArpaTCPWatcher already started."]; out _ ViewerIO.CreateViewerStreams[ name: "ArpaTCP.log", viewer: NIL, backingFile: "ArpaTCP.log", editedStream: FALSE].out; viewer _ ViewerIO.GetViewerFromStream[out]; TypeScript.ChangeLooks[viewer, 'f]; [] _ ViewerEvents.RegisterEventProc[proc: DestroyProc, event: destroy, filter: viewer]; ArpaTCPLogging.logFile _ out; }; DestroyProc: ViewerEvents.EventProc = { <<[viewer: ViewerClasses.Viewer, event: ViewerEvents.ViewerEvent, before: BOOL] RETURNS [abort: BOOL _ FALSE]>> ArpaTCPLogging.logFile _ NIL; }; Commander.Register["ArpaTCPWatcher", StartWatcher, "Start up a typescript to watch TCP packets."]; END.