README.md in posix-mqueue-0.0.2 vs README.md in posix-mqueue-0.0.3
- old
+ new
@@ -14,10 +14,12 @@
Still WIP. Not stable. Not everything works as promised.
## Usage
```ruby
+require 'posix/mqueue'
+
m = POSIX::Mqueue.new("/whatever")
m.send "hello"
puts m.receive
# => "hello"
@@ -25,7 +27,57 @@
# Blocks until the forked process pushes to the queue
m.receive
# => "world"
```
+
+## mqueue
+
+Most important information from the manpages, with a little added information
+about the behavior of `posix-mqueue`.
+
+## /proc interfaces
+
+1. `/proc/sys/fs/mqueue/msg_max`. Contains the maximum number of messages in
+ queue. Defaults to 10. You should increase that number. `#send` will throw an
+ exception if the queue is full (instead of blocking).
+2. `/proc/sys/fs/mqueue/msgsize_max`. Maximum size of a single message. Defaults
+ to 8192 bytes. `posix-mqueue` defaults to 4096 bytes. You'll be able to
+ change this, soon!
+3. `/proc/sys/fs/mqueue/queues_max`. Maximum number of queues on the system.
+ Defaults to 256. Which is probably enough.
+
+## Virtual filesystem
+
+The message queue is created as a virtual file system. That means you can mount
+it:
+
+ # sudo mkdir /dev/queue
+ # sudo mount -t mqueue none /dev/queue
+
+Add a queue and a few tasks, count the characters and you'll see it's a total of 19 bytes:
+
+ $ irb
+ > require 'posix/mqueue'
+ => true
+ > m = POSIX::Mqueue.new("/queue")
+ => #<POSIX::Mqueue:0xb8c9fe88>
+ > m.send "narwhal"
+ => true
+ > m.send "walrus"
+ => true
+ > m.send "ponies"
+ => true
+ > exit
+
+Inspect the mounted filesystem:
+
+ $ ls /dev/queue/
+ important mails queue
+ $ cat /dev/queue/queue
+ QSIZE:19 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
+
+Here `QSIZE` is the bytes of data in the queue. The other flags are about
+notifications which `posix-mqueue` does not support currently, read about them
+in [mq_overview(7)][pmq].
[pmq]: http://man7.org/linux/man-pages/man7/mq_overview.7.html