Short:        A logging window for multiple clients.
Author:       Tom Breeden
Uploader:     "Tom Breeden" <tmb virginia edu>
Type:         util/cli
Version:      0.1
Requires:     AOS 4 July release
Architecture: ppc-amigaos >= 4.0.5

                     3/31/2008
--------------------
Program LoggerWindow   v0.1
--------------------
  LoggerWindow is a program to provide a logging window for multiple clients.

  It opens a console window and an Amiga named pipe. It monitors the named pipe and displays whatever text arrives through the pipe onto the window.

  Use from the shell:    RUN LoggerWindow MyLoggerName

  Multiple writers can display their logging information by writing to, or redirecting a standard output to PIPE:MyLoggerName. e.g.,

                         DATE > PIPE:MyLoggerName

  Modula-2 programs can use LoggerDefs.WriteLoggerString().

  LoggerWindow also implements the "special text" commands:

     $QUIT$ for ending the LoggerWindow program. e.g.,

                          ECHO $QUIT$ > PIPE:MyLoggerName

     $FRONT$, $POS$x$y$, $SIZ$x$y$, $CLR$ for control of the display window.

  See Loggerdefs.def for more information.

  A0S4 support only.

-----------------
Module LoggerDefs    v1.3
-----------------
  M2 Module to provide support for a logging program.

  The logging channel is implemented by a named Amiga pipe.

  Use: Open the logging reader:
          Reader := OpenLogger()
          ObtainLoggerPipe(Reader, LoggerRead, "MyName", ...)

       REPEAT

         Open a logging writer:  
            Writer := OpenLogger();
            ObtainLoggerPipe(Writer, LoggerWrite, "MyName", ...)

         Do the desired logging:
            WriteLoggerString(Writer, "string to be logged")
            ...
            ReadLoggerLine(Reader, ...)

         Close a logging writer:
            CloseLogger(Writer)

       UNTIL finished

       Close the logging reader:
          CloseLogger(Writer);

    Note:  Because Amiga named pipes are system-wide, the reader and writer do not have to be in the same process.

    A special text sequence, "$QUIT$" should be written in order to tell the reading logger to shut down.

    A set of text based commands is defined for use when the reading logger is displaying the incoming text in an Amiga window: e.g.,

     $FRONT$        - move the logging window to the front.
     $POS$x$y$      - position the LeftEdge and TopEdge of the logging window.
     $SIZE$w$h$     - set the Width and Height of the logging window.
     $CLR           - clear the logging window.

   Note:  This module does not implement any of the commands, it just provides support for easily writing one of the commands, and for the reader to easily test for an incoming command.

-------------
Module PipeIO      v0.2
-------------
   M2 Module for support in using Amiga Pipes.

   Currently, Reads and Writes are handled synchronously. Reads will block until data is available.

   You open a Pipe either as a reader or a writer. Expected use is as follows:

     Open a Reader
     LOOP
        Open one or more Writers
        Do the writing
        Close the Writer(s)
     END
     Close the Reader

   Other permutations may work or may cause trouble.

   If the last Reader closes and there is unread data in the pipe there may be trouble. At the least, the named pipe will become unusable until OS reboot.