$Id: bin-README,v 1.1 2005/06/17 22:14:01 mike Exp $ This directory contains three simple programs that exercise the Alvis::Pipeline module: * alvis-pipeline-put.pl -- generates a sequence of XML documents and pushes them down a pipe at random intervals. * alvis-pipeline-filter.pl -- reads documents from an input pipe, and writes that straight back down an output pipe. * alvis-pipeline-get.pl -- reads documents from an input pipe and prints them. These can be be plumbed together to make an elementary pipeline (though not a very exciting one as the generated documents are small and dull, and the filter in the middle of the pipeline doesn't do anything to them.) Try this: In window 1: alvis-pipeline-put.pl e.g. alvis-pipeline-put.pl 12344 /tmp/spool1 In window 2: alvis-pipeline-filter.pl e.g. alvis-pipeline-filter.pl localhost 12344 /tmp/spool2 20004 In window 3: alvis-pipeline-get.pl e.g. alvis-pipeline-get.pl localhost 20004 In these invocations, the command-line arguments represent Internet port numbers, hostnames and spool directories. Each program that acts as a writer (i.e. "put" and "filter") must specify a spool directory, which it will maintain. No two pipeline components on the same machine may use the same spool directory, or chaos will ensue. (### A later release might enforce this restriction using locks.) In this example, the generator keeps its temporary files in /tmp/spool1 and the filter in /tmp/spool2. You may use any other directories you wish, so long as they are different from each other, and each is empty (or non-existent) at startup time. Each program that acts as a reader (i.e. "filter" and "get") must specify the name of the host to read from. In this example, all three program run on the same machine, so both readers specify localhost. Each program that acts as a reader or write must specify the port to connect to or listen from. Since "filter" is both a reader and a writer, it must specify both. Its reading port must match the writing port of the "put" invocation (in the example, 12344), and its writing port must match the reading port of the "get" invocation (in the example, 20004).