'\" t .\" Title: zmq_cpp .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: 11/22/2011 .\" Manual: 0MQ Manual .\" Source: 0MQ 2.1.10 .\" Language: English .\" .TH "ZMQ_CPP" "7" "11/22/2011" "0MQ 2\&.1\&.10" "0MQ Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" zmq_cpp \- interface between 0MQ and C++ applications .SH "SYNOPSIS" .sp \fB#include \fR .sp \fBc++\fR [\fIflags\fR] \fIfiles\fR \fB\-lzmq\fR [\fIlibraries\fR] .SH "DESCRIPTION" .sp This manual page describes how the 0MQ C++ language binding maps to the underlying 0MQ C library functions\&. .sp All 0MQ constants defined by \fIzmq\&.h\fR are also available to the C++ language binding\&. .sp The following classes are provided in the \fIzmq\fR namespace: .SS "Context" .sp The \fIcontext_t\fR class encapsulates functionality dealing with the initialisation and termination of a 0MQ \fIcontext\fR\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBConstructor\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBcontext_t::context_t(int \fR\fB\fIio_threads\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_init()\fR function, as described in \fBzmq_init\fR(3)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDestructor\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBcontext_t::~context_t(void)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_term()\fR function, as described in \fBzmq_term\fR(3)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBMethods\fR .RS 4 .sp None\&. .RE .SS "Socket" .sp The \fIsocket_t\fR class encapsulates a 0MQ socket\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBConstructor\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBsocket_t::socket_t(context_t \fR\fB\fI&context\fR\fR\fB, int \fR\fB\fItype\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_socket()\fR function, as described in \fBzmq_socket\fR(3)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDestructor\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBsocket_t::~socket_t(void)\fR .fi .if n \{\ .RE .\} .sp Calls the \fIzmq_close()\fR function, as described in \fBzmq_close\fR(3)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBMethods\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBvoid socket_t::getsockopt(int \fR\fB\fIoption_name\fR\fR\fB, void \fR\fB\fI*option_value\fR\fR\fB, size_t \fR\fB\fI*option_len\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_getsockopt()\fR function, as described in \fBzmq_getsockopt\fR(3)\&. .sp .if n \{\ .RS 4 .\} .nf \fBvoid socket_t::setsockopt(int \fR\fB\fIoption_name\fR\fR\fB, const void \fR\fB\fI*option_value\fR\fR\fB, size_t \fR\fB\fIoption_len\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_setsockopt()\fR function, as described in \fBzmq_setsockopt\fR(3)\&. .sp .if n \{\ .RS 4 .\} .nf \fBvoid socket_t::bind(const char \fR\fB\fI*endpoint\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_bind()\fR function, as described in \fBzmq_bind\fR(3)\&. .sp .if n \{\ .RS 4 .\} .nf \fBvoid socket_t::connect(const char \fR\fB\fI*endpoint\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_connect()\fR function, as described in \fBzmq_connect\fR(3)\&. .sp .if n \{\ .RS 4 .\} .nf \fBbool socket_t::send(message_t \fR\fB\fI&msg\fR\fR\fB, int \fR\fB\fIflags\fR\fR\fB = 0)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_send()\fR function, as described in \fBzmq_send\fR(3)\&. Returns true if message is successfully sent, false if it is not\&. .sp .if n \{\ .RS 4 .\} .nf \fBbool socket_t::recv(message_t \fR\fB\fI*msg\fR\fR\fB, int \fR\fB\fIflags\fR\fR\fB = 0)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_recv()\fR function, as described in \fBzmq_recv\fR(3)\&. Returns true if message is successfully received, false if it is not\&. .RE .SS "Message" .sp The \fIzmq::message_t\fR class encapsulates the \fIzmq_msg_t\fR structure and functions to construct, destruct and manipulate 0MQ messages\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBConstructor\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBmessage_t::message_t(void)\fR \fBmessage_t::message_t(size_t \fR\fB\fIsize\fR\fR\fB)\fR \fBmessage_t::message_t(void \fR\fB\fI*data\fR\fR\fB, size_t \fR\fB\fIsize\fR\fR\fB, free_fn \fR\fB\fI*ffn\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp These map to the \fIzmq_msg_init()\fR, \fIzmq_msg_init_size()\fR and \fIzmq_msg_init_data()\fR functions, described in \fBzmq_msg_init\fR(3), \fBzmq_msg_init_size\fR(3) and \fBzmq_msg_init_data\fR(3) respectively\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBDestructor\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBmessage_t::~message_t(void)\fR .fi .if n \{\ .RE .\} .sp Calls the \fIzmq_msg_close()\fR function, as described in \fBzmq_msg_close\fR(3)\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBMethods\fR .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBvoid *message_t::data (void)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_msg_data()\fR function, as described in \fBzmq_msg_data\fR(3)\&. .sp .if n \{\ .RS 4 .\} .nf \fBsize_t message_t::size (void)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_msg_size()\fR function, as described in \fBzmq_msg_size\fR(3)\&. .sp .if n \{\ .RS 4 .\} .nf \fBvoid message_t::copy (message_t \fR\fB\fI*src\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_msg_copy()\fR function, as described in \fBzmq_msg_copy\fR(3)\&. .sp .if n \{\ .RS 4 .\} .nf \fBvoid message_t::move (message_t \fR\fB\fI*src\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Maps to the \fIzmq_msg_move()\fR function, as described in \fBzmq_msg_move\fR(3)\&. .sp .if n \{\ .RS 4 .\} .nf \fBmessage_t::rebuild(void)\fR \fBmessage_t::rebuild(size_t \fR\fB\fIsize\fR\fR\fB)\fR \fBmessage_t::rebuild(void \fR\fB\fI*data\fR\fR\fB, size_t \fR\fB\fIsize\fR\fR\fB, free_fn \fR\fB\fI*ffn\fR\fR\fB)\fR .fi .if n \{\ .RE .\} .sp Equivalent to calling the \fIzmq_msg_close()\fR function followed by the corresponding \fIzmq_msg_init()\fR function\&. .RE .SS "Input/output multiplexing" .sp .if n \{\ .RS 4 .\} .nf \fBint poll (zmq_pollitem_t *items, int nitems, long timeout = \-1)\fR .fi .if n \{\ .RE .\} .sp The \fIpoll()\fR function is a namespaced equivalent of the \fIzmq_poll()\fR function, as described in \fBzmq_poll\fR(3)\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBNote\fR .ps -1 .br .sp To obtain a 0MQ \fIsocket\fR for use in a \fIzmq_pollitem_t\fR structure, you should cast an instance of the \fIsocket_t\fR class to (void *)\&. .sp .5v .RE .SH "ERROR HANDLING" .sp All errors reported by the underlying 0MQ C library functions are automatically converted to exceptions by the C++ language binding\&. The \fIzmq::error_t\fR class is derived from the \fIstd::exception\fR class and uses the \fIzmq_strerror()\fR function to convert the error code to human\-readable string\&. .SH "EXAMPLE" .sp .if n \{\ .RS 4 .\} .nf zmq::context_t ctx (1); zmq::socket_t s (ctx, ZMQ_PUB); s\&.connect ("tcp://192\&.168\&.0\&.115:5555"); zmq::message_t msg (100); memset (msg\&.data (), 0, 100); s\&.send (msg); .fi .if n \{\ .RE .\} .SH "SEE ALSO" .sp \fBzmq\fR(7) .SH "AUTHORS" .sp This 0MQ manual page was written by Martin Sustrik <\m[blue]\fBsustrik@250bpm\&.com\fR\m[]\&\s-2\u[1]\d\s+2> and Martin Lucina <\m[blue]\fBmato@kotelna\&.sk\fR\m[]\&\s-2\u[2]\d\s+2>\&. .SH "NOTES" .IP " 1." 4 sustrik@250bpm.com .RS 4 \%mailto:sustrik@250bpm.com .RE .IP " 2." 4 mato@kotelna.sk .RS 4 \%mailto:mato@kotelna.sk .RE