cppzmq

Overview

Discussion page about the C++ translation of the libzapi.

Ideas

Typesafe templates for received messages and frames

Current C++ API

zmq_cpp(7)

ØMQ Manual - ØMQ/2.2.0

Name

zmq_cpp - interface between ØMQ and C++ applications

Synopsis

#include <zmq.hpp>

c++ [flags] files -lzmq [libraries]

Description

This manual page describes how the ØMQ C++ language binding maps to the underlying ØMQ C library functions.

All ØMQ constants defined by zmq.h are also available to the C++ language binding.

The following classes are provided in the zmq namespace:

Context

The context_t class encapsulates functionality dealing with the initialisation and termination of a ØMQ context.

Constructor

context_t::context_t(int io_threads)

Maps to the zmq_init() function, as described in zmq_init(3).

Destructor

context_t::~context_t(void)

Maps to the zmq_term() function, as described in zmq_term(3).

Methods

None.

Socket

The socket_t class encapsulates a ØMQ socket.

Constructor

socket_t::socket_t(context_t &context, int type)

Maps to the zmq_socket() function, as described in zmq_socket(3).

Destructor

socket_t::~socket_t(void)

Calls the zmq_close() function, as described in zmq_close(3).

Methods

void socket_t::getsockopt(int option_name, void *option_value, size_t *option_len)

Maps to the zmq_getsockopt() function, as described in zmq_getsockopt(3).

void socket_t::setsockopt(int option_name, const void *option_value, size_t option_len)

Maps to the zmq_setsockopt() function, as described in zmq_setsockopt(3).

void socket_t::bind(const char *endpoint)

Maps to the zmq_bind() function, as described in zmq_bind(3).

void socket_t::connect(const char *endpoint)

Maps to the zmq_connect() function, as described in zmq_connect(3).

bool socket_t::send(message_t &msg, int flags = 0)

Maps to the zmq_send() function, as described in zmq_send(3). Returns true if message is successfully sent, false if it is not.

bool socket_t::recv(message_t *msg, int flags = 0)

Maps to the zmq_recv() function, as described in zmq_recv(3). Returns true if message is successfully received, false if it is not.

Message

The zmq::message_t class encapsulates the zmq_msg_t structure and functions to construct, destruct and manipulate ØMQ messages.

Constructor

message_t::message_t(void) message_t::message_t(size_t size) message_t::message_t(void *data, size_t size, free_fn *ffn)

These map to the zmq_msg_init(), zmq_msg_init_size() and zmq_msg_init_data() functions, described in zmq_msg_init(3), zmq_msg_init_size(3) and zmq_msg_init_data(3) respectively.

Destructor

message_t::~message_t(void)

Calls the zmq_msg_close() function, as described in zmq_msg_close(3).

Methods

void *message_t::data (void)

Maps to the zmq_msg_data() function, as described in zmq_msg_data(3).

size_t message_t::size (void)

Maps to the zmq_msg_size() function, as described in zmq_msg_size(3).

void message_t::copy (message_t *src)

Maps to the zmq_msg_copy() function, as described in zmq_msg_copy(3).

void message_t::move (message_t *src)

Maps to the zmq_msg_move() function, as described in zmq_msg_move(3).

message_t::rebuild(void) message_t::rebuild(size_t size) message_t::rebuild(void *data, size_t size, free_fn *ffn)

Equivalent to calling the zmq_msg_close() function followed by the corresponding zmq_msg_init() function.

Input/output multiplexing

int poll (zmq_pollitem_t *items, int nitems, long timeout = -1)

The poll() function is a namespaced equivalent of the zmq_poll() function, as described in zmq_poll(3).

To obtain a ØMQ socket for use in a zmq_pollitem_t structure, you should cast an instance of the socket_t class to (void *).

Error handling

All errors reported by the underlying ØMQ C library functions are automatically converted to exceptions by the C++ language binding. The zmq::error_t class is derived from the std::exception class and uses the zmq_strerror() function to convert the error code to human-readable string.

Example

See also

zmq(7)

Authors

The ØMQ documentation was written by Martin Sustrik <moc.mpb052|kirtsus#moc.mpb052|kirtsus> and Martin Lucina <ks.anletok|otam#ks.anletok|otam>.

Comments: 2

Add a New Comment