aboutsummaryrefslogtreecommitdiff
path: root/man/man4/plumber.4
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-03 06:40:20 +0000
committerrsc <devnull@localhost>2005-01-03 06:40:20 +0000
commit058b0118a52061ad57694c01fc8763b22b789c4d (patch)
tree6685f04dea5ed68edaa34998c976aed34c55fe94 /man/man4/plumber.4
parent2600337aa704efbeba8201e88147a764b4fd2b90 (diff)
downloadplan9port-058b0118a52061ad57694c01fc8763b22b789c4d.tar.gz
plan9port-058b0118a52061ad57694c01fc8763b22b789c4d.tar.bz2
plan9port-058b0118a52061ad57694c01fc8763b22b789c4d.zip
Some man pages.
Diffstat (limited to 'man/man4/plumber.4')
-rw-r--r--man/man4/plumber.4121
1 files changed, 121 insertions, 0 deletions
diff --git a/man/man4/plumber.4 b/man/man4/plumber.4
new file mode 100644
index 00000000..681bd5e2
--- /dev/null
+++ b/man/man4/plumber.4
@@ -0,0 +1,121 @@
+.TH PLUMBER 4
+.SH NAME
+plumber \- file system for interprocess messaging
+.SH SYNOPSIS
+.B plumber
+[
+.B -p
+.I plumbing
+]
+.SH DESCRIPTION
+The
+.I plumber
+is a user-level file server that receives, examines, rewrites, and dispatches
+.IR plumb (7)
+messages between programs.
+Its behavior is programmed by a
+.I plumbing
+file (default
+.BR /usr/$user/lib/plumbing )
+in the format of
+.IR plumb (7).
+.PP
+Its services are posted via
+.IR 9pserve (4)
+as
+.BR plumb .
+and consist of two
+pre-defined files,
+.B plumb/send
+and
+.BR plumb/rules ,
+and a set of output
+.I ports
+for dispatching messages to applications.
+.PP
+Programs use
+.B fswrite
+(see
+.IR 9pclient (3))
+to deliver messages to the
+.B send
+file, and
+.I fsread
+to receive them from the corresponding port.
+For example,
+.IR sam (1)'s
+.B plumb
+menu item or the
+.B B
+command cause a message to be sent to
+.BR plumb/send ;
+.B sam
+in turn reads from, by convention,
+.B plumb/edit
+to receive messages about files to open.
+.PP
+A copy of each message is sent to each client that has the corresponding port open.
+If none has it open, and the rule has a
+.B plumb
+.B client
+or
+.B plumb
+.B start
+rule, that rule is applied.
+A
+.B plumb
+.B client
+rule causes the specified command to be run
+and the message to be held for delivery when the port is opened.
+A
+.B plumb
+.B start
+rule runs the command but discards the message.
+If neither
+.B start
+or
+.B client
+is specified and the port is not open,
+the message is discarded and a write error is returned to the sender.
+.PP
+The set of output ports is determined dynamically by the
+specification in the plumbing rules file: a port is created for each unique
+destination of a
+.B plumb
+.B to
+rule.
+.PP
+The set of rules currently active may be examined by reading the file
+.BR plumb/rules ;
+appending to this file adds new rules to the set, while
+creating it (opening it with
+.BR OTRUNC )
+clears the rule set.
+Thus the rule set may be edited dynamically with a traditional text editor.
+However, ports are never deleted dynamically; if a new set of rules does not
+include a port that was defined in earlier rules, that port will still exist (although
+no new messages will be delivered there).
+.SH FILES
+.TF /usr/$user/lib/plumbing
+.TP
+.B /usr/$user/lib/plumbing
+default rules file
+.TP
+.B /usr/local/plan9/plumb
+directory to search for files in
+.B include
+statements
+.TP
+.B plumb
+mount name for
+.IR plumber (4).
+.SH SOURCE
+.B /usr/local/plan9/src/cmd/plumb
+.SH "SEE ALSO"
+.IR plumb (1),
+.IR plumb (3),
+.IR plumb (7)
+.\" .SH BUGS
+.\" .IR Plumber 's
+.\" file name space is fixed, so it is difficult to plumb
+.\" messages that involve files in newly mounted services.