Sha256: 913e603be63e7d78a8db47f6fa91631c755b78d8b0c43d9affe1fd9734487054
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
# sysvmq [![Build Status](https://travis-ci.org/Sirupsen/sysvmq.png?branch=v0.1.0)](https://travis-ci.org/Sirupsen/sysvmq) `sysvmq` is a C extension that wraps System V IPC Message Queues. It's similar to the [POSIX MQ Ruby wrapper](https://github.com/Sirupsen/posix-mqueue). Message queues are handy for interprocess communication where you want to be able to take down either endpoint easily. For example, a pipe or socket requires you to implement handover logic in both applications. The main disadvantage of SysV message queues over POSIX MQs (on Linux) is that SysV doesn't expose a file descriptor to do e.g. `select(2)` on. The advantage of SysV is that it's implemented on OS X, which POSIX MQs are not. Note that `sysvmq` doesn't rely on any third-party message broker. The message queue is handled by the kernel. It's extremely stable and performant. ## Installation Add `sysvm` to your Gemfile. `gem 'sysvmq'` Currently known to work on Linux and OS X for MRI >= 2.0. ## Usage ```ruby # Create a message queue with a 1024 byte buffer. require 'sysvmq' mq = SysVMQ.new(0xDEADC0DE, 1024, SysVMQ::IPC_CREAT | 0666) mq.send "Hellø Wårld!" assert_equal 1, mq.stats[:count] assert_equal "Hellø Wårld!", mq.receive.force_encoding("UTF-8") # Raise an exception instead of blocking until a message is available mq.receive(0, SysVMQ::IPC_NOWAIT) ensure # Delete queue mq.destroy ``` ## Todo * Explain messages types * Add named params for flags (e.g. `mq.receive(:front, blocking: false)`) instead of ORing flags directly. * Add `IPC_INFO` on Linux * Add all of `IPC_STAT`
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sysvmq-0.2.0 | README.md |