While this seems like an interesting project, I would strongly urge you to change the name, "Plumb" is already used by a way too similar project and will just cause confusion:
http://doc.cat-v.org/plan_9/4th_edition/papers/plumb uriel On Wed, Jul 14, 2010 at 6:00 PM, Mate Nagy <mn...@port70.net> wrote: > Hello all, > > here I am advertising my own personal project. (Technically it's a > complete rewrite, the old version was announced here once before.) > > Home page: http://repo.hu/projects/plumb/ > > Plumb is a program that runs multiple processes and lets you define > arbitrary pipes between them (it uses libevent to manage the data > transfer). > > The major new feature in the rewrite is that it has a fairly comfy > "control language" that it can also read from pipes in runtime; this > means that a program running under Plumb can start new processes, shut > down old ones, create or kill pipes. > > The simplest, most common application would be to start two processes > and connect them in a "69" configuration - STDIN to STDOUT of the other. > This is how you can use Animator (http://repo.hu/projects/animator/) > to write simple interactive apps. > > A slightly more complex application: I wrote an interactive, graphical > Gopher client in AWK. It uses Animator for the display, and spawns nc > for downloads as needed. Multiple downloads can be ongoing at the same > time. It manages all this from a simple AWK script that does nothing > else but read from STDIN and write to STDOUT. > > There's another tool that is part of the "Plumb package", called > plumbnet. It's a TCP server that listens on a port and accepts > multiple connections at once (again, using libevent). > It writes lines received from connections to STDOUT, and reads > lines to send on its STDIN. Connections are distinguished by > integer connection ID prefixes in either direction. > > You'd tipically use plumbnet by wiring it together with your program > using Plumb. It may be a good alternative to inetd, when you > want to accept multiple TCP connections but there is common state > (so you'd have to do some sort of IPC, or write a complete network > daemon from scratch). > > Plumb basically lets you use STDIN/STDOUT in new and flexible ways. > Most of this was possible to do before by hand (e.g. by using mkfifo), > but with Plumb, it should be much more comfortable. I don't know, > it might even serve to connect a controlling script with a window > manager, so the wm logic is moved outside the core wm :) > > The core use case is probably the "hack up something fast" "i really > like AWK" "i'm at a programming compo" scenario. > > Suggestions/complaints/bug reports/flame is very welcome as usual > (except regarding the license or VCS ;) > > Thanks for reading, > Mate > >