Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (4) — Plan9 4th Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

plumb(1)

plumb(2)

plumb(6)

PLUMBER(4)

NAME

plumber − file system for interprocess messaging

SYNOPSIS

­plumber [ ­-p ­plumbing ]

DESCRIPTION

The ­plumber is a user-level file server that receives, examines, rewrites, and dispatches plumb(6) messages between programs. Its behavior is programmed by a ­plumbing file (default /usr/$user/lib/plumbing) in the format of plumb(6).

Its services are mounted on the directory ­/mnt/plumb (/mnt/term/mnt/plumb on the CPU server) and consist of two pre-defined files, ­send and rules, and a set of output ­ports for dispatching messages to applications.  The service is also published as a srv(4) file, named in $plumbsrv, for mounting elsewhere. 

Programs use ­write (see read(2)) to deliver messages to the ­send file, and read(2) to receive them from the corresponding port. For example, sam(1)’s ­plumb menu item or the ­B command cause a message to be sent to /mnt/plumb/send; ­sam in turn reads from, by convention, ­/mnt/plumb/edit to receive messages about files to open. 

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 ­plumb ­client or ­plumb ­start rule, that rule is applied.  A ­plumb ­client rule causes the specified command to be run and the message to be held for delivery when the port is opened.  A ­plumb ­start rule runs the command but discards the message.  If neither ­start or ­client is specified and the port is not open, the message is discarded and a write error is returned to the sender. 

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 ­plumb ­to rule. 

The set of rules currently active may be examined by reading the file /mnt/plumb/rules; appending to this file adds new rules to the set, while creating it (opening it with 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). 

FILES

­/usr/$user/lib/plumbing
default rules file

­/sys/lib/plumb directory to search for files in ­include statements

­/mnt/plumb mount point for plumber(4).

SOURCE

­/sys/src/cmd/plumb

SEE ALSO

plumb(1), plumb(2), plumb(6)

BUGS

Plumber’s file name space is fixed, so it is difficult to plumb messages that involve files in newly mounted services.
 

Plan 9  —  December 11, 1999

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026