~kvik/mq

message queue
pin(1): don't end in empty section
41f14ba4 — james palmer 3 years ago
mq: fix incorrect free in streamclose
mq: various code quality improvements

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~kvik/mq
read/write
git@git.sr.ht:~kvik/mq

You can also use your local clone with git send-email.

#mq(4) — message queue

Mq serves a 9p file tree representing groups of buffered two-way data streams for multiple readers and writers accessible through the standard read(2) and write(2) file I/O interface.

#Overview

Streams may be organized within an arbitrary file tree structure, which provides a means of namespacing and grouping.

* * order ctl

A directory denotes a group of streams. Any number of streams and sub-groups may be created within a group. Grouped streams share configuration and an order file.

The read-only meta-stream called order provides ordering information for data written to streams within a group. Special readers such as mq-cat(1) can tap into this stream to retrieve data coming from multiple streams in the same order it was written.

See the mq(4) manual page for a complete description of supported data modes, queue replay options, usage reference, and other details.

#Examples

Mount the mq(4) file server and use it to persist an rc(1) shell session.

mq -s detach
mount -c /srv/detach /n/detach
mkdir /n/detach/rc
cd /n/detach/rc
echo replay all >ctl
touch fd0 fd1 fd2
rc -i <fd0 >>fd1 >>[2]fd2 &

Attach to the shell:

cat fd1 & cat fd2 & cat >>fd0

The program pin(1) provides a polished interface for persisting program sessions. It also makes use of the data ordering feature for faithful reproduction of session history.

The program mq-cat(1) is an example of an ordered multi-stream reader.