CZTop
CZTop is a CZMQ binding for Ruby. It is based on czmq-ffi-gen, the generated low-level FFI binding of CZMQ and has a focus on being easy to use for Rubyists (POLS) and providing first class support for security mechanisms (like CURVE).
Overview
Class Hierarchy
Here's an overview of the core classes:
- CZTop
- Actor
- Authentiator
- Beacon
- Certificate
- CertStore
- Config
- Frame
- Message
- Monitor
- Metadata
- Proxy
- Poller (based on
zmq_poller_*()
functions) - Aggregated
- ZPoller
- Socket
- REQ < Socket
- REP < Socket
- ROUTER < Socket
- DEALER < Socket
- PUSH < Socket
- PULL < Socket
- PUB < Socket
- SUB < Socket
- XPUB < Socket
- XSUB < Socket
- PAIR < Socket
- STREAM < Socket
- CLIENT < Socket
- SERVER < Socket
- RADIO < Socket
- DISH < Socket
- SCATTER < Socket
- GATHER < Socket
- Z85
- Padded < Z85
- Pipe
- ZAP
More information in the API documentation.
Features
- Ruby-like API
- method names
- sending a message via a socket is done with
Socket#<<
socket << "simple message"
socket << ["multi", "frame", "message"]
#x=
methods instead of#set_x
(e.g. socket options)#[]
where it makes sense (e.g. on a Message, Config, or Certificate)- no manual error checking needed
- if there's an error, an appropriate exception is raised
- of course, no manual dealing with the ZMQ context
- easy security
- use
Socket#CURVE_server!(cert)
on the server - and
Socket#CURVE_client!(client_cert, server_cert)
on the client
- use
- socket types as Ruby classes
- no need to manually pass type constants
- but you can:
CZTop::Socket.new_by_type(:REP)
- e.g.
#subscribe
only exists onCZTop::Socket::SUB
Requirements
- CZMQ >= 4.2
- ZMQ >= 4.3
On Ubuntu 20.04+:
$ sudo apt install libczmq-dev
On macOS using Homebrew, run:
$ brew install czmq
Supported Rubies
- MRI (2.6, 2.7, 3.0)
- Rubinius (HEAD)
- JRuby 9000 (HEAD)
Installation
To use this gem, add this line to your application's Gemfile:
gem 'cztop'
And then execute:
$ bundle
Or install it yourself as:
$ gem install cztop
Documentation
The API should be fairly straight-forward to anyone who is familiar with CZMQ and Ruby. The following API documentation is currently available:
- YARD API documentation (release)
Feel free to start a wiki page.
Performance
CZTop is just a convenience layer on top of the thin czmq-ffi-gen library.
Make sure to check out the perf directory for latency and throughput measurement scripts.
Usage
See the examples directory for some examples.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/paddor/cztop.
To run the tests before/after you made any changes to the source and have
created a test case for it, use rake spec
.
License
The gem is available as open source under the terms of the ISC License. See the LICENSE file.