Net::ZMQ

ZeroMQ bindings for Perl6

Net::ZMQ

Net::ZMQ is a Perl 6 library that may be used to interact with ZeroMQ library.

use Net::ZMQ4;            # Your main import
use Net::ZMQ4::Constants; # Basic constants

my Net::ZMQ4::Context $ctx .= new;

my Net::ZMQ4::Socket $Rize .= new($ctx, ZMQ_PULL);
$Rize.bind("tcp://127.0.0.1:2910");
my Net::ZMQ4::Socket $Sharo .= new($ctx, ZMQ_PUSH);
$Sharo.connect("tcp://127.0.0.1:2910");

# Single message
$Sharo.send('Kuru Kuru');
# Splitted message
$Sharo.sendmore('Cats', 'Dogs', 'Rabbits');

my $msg = $Rize.receive; # Pure ZMQ message
say $msg.data;           # bytes
say $msg.data-str;       # 'Kuru Kuru'
$msg.close;              # Don't forget to close your messages!

# Multi-receive
loop {
    my $msg = $Rize.receive(0); # Can take flags as arguments, 0 is default
    say $msg.data-str;
    $msg.close;
    unless $Rize.getopt(ZMQ_RCVMORE) == 1 {
        last; # If there are no pieces
    }
}
# Says:
# Cats
# Dogs
# Rabbits

Supported version

Main supported ZMQ version is 4.1. Support of 4.2 is planned.

Issues

If you noticed a bug, have a desire to see some feature implemented, feel free to open a ticket on github's issues page of the project.

Authors

The library was written by Arne Skjærholt(arnsholt on github) with a help of many others(see Contributors page).

Altai-man made small cosmetic changes too.

Contributing

The project is still relatively unstable and thus wants some love. :) All new issues and pull requests are welcome.

Efforts may be spend on:

  • Want to support a legacy version? Write a compatibility layer for the version you want as, for example, ZMQX::Compat, where X can be desired version.

  • If you feel like a strong mage, you can try your luck with improving library's stability. Catch segfaults, fix memory leaks - any improvements in this difficult field will be greatly appreciated.

  • Want to help project while writing Perl 6? Contribute examples!

  • Spotted a typo in this README? Want to write more documentation? Feel free to pull request additional docs!

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.