summaryrefslogtreecommitdiff
path: root/doc/zmq_recvmsg.3
diff options
context:
space:
mode:
Diffstat (limited to 'doc/zmq_recvmsg.3')
-rw-r--r--doc/zmq_recvmsg.3175
1 files changed, 175 insertions, 0 deletions
diff --git a/doc/zmq_recvmsg.3 b/doc/zmq_recvmsg.3
new file mode 100644
index 0000000..dc312f8
--- /dev/null
+++ b/doc/zmq_recvmsg.3
@@ -0,0 +1,175 @@
+'\" t
+.\" Title: zmq_recvmsg
+.\" Author: [see the "AUTHORS" section]
+.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+.\" Date: 10/14/2014
+.\" Manual: 0MQ Manual
+.\" Source: 0MQ 4.0.5
+.\" Language: English
+.\"
+.TH "ZMQ_RECVMSG" "3" "10/14/2014" "0MQ 4\&.0\&.5" "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_recvmsg \- receive a message part from a socket
+.SH "SYNOPSIS"
+.sp
+\fBint zmq_recvmsg (void \fR\fB\fI*socket\fR\fR\fB, zmq_msg_t \fR\fB\fI*msg\fR\fR\fB, int \fR\fB\fIflags\fR\fR\fB);\fR
+.SH "DESCRIPTION"
+.sp
+The \fIzmq_recvmsg()\fR function shall receive a message part from the socket referenced by the \fIsocket\fR argument and store it in the message referenced by the \fImsg\fR argument\&. Any content previously stored in \fImsg\fR shall be properly deallocated\&. If there are no message parts available on the specified \fIsocket\fR the \fIzmq_recvmsg()\fR function shall block until the request can be satisfied\&. The \fIflags\fR argument is a combination of the flags defined below:
+.PP
+\fBZMQ_DONTWAIT\fR
+.RS 4
+Specifies that the operation should be performed in non\-blocking mode\&. If there are no messages available on the specified
+\fIsocket\fR, the
+\fIzmq_recvmsg()\fR
+function shall fail with
+\fIerrno\fR
+set to EAGAIN\&.
+.RE
+.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
+this API method is deprecated in favor of zmq_msg_recv(3)\&.
+.sp .5v
+.RE
+.SS "Multi\-part messages"
+.sp
+A 0MQ message is composed of 1 or more message parts\&. Each message part is an independent \fIzmq_msg_t\fR in its own right\&. 0MQ ensures atomic delivery of messages: peers shall receive either all \fImessage parts\fR of a message or none at all\&. The total number of message parts is unlimited except by available memory\&.
+.sp
+An application that processes multi\-part messages must use the \fIZMQ_RCVMORE\fR \fBzmq_getsockopt\fR(3) option after calling \fIzmq_recvmsg()\fR to determine if there are further parts to receive\&.
+.SH "RETURN VALUE"
+.sp
+The \fIzmq_recvmsg()\fR function shall return number of bytes in the message if successful\&. Otherwise it shall return \-1 and set \fIerrno\fR to one of the values defined below\&.
+.SH "ERRORS"
+.PP
+\fBEAGAIN\fR
+.RS 4
+Non\-blocking mode was requested and no messages are available at the moment\&.
+.RE
+.PP
+\fBENOTSUP\fR
+.RS 4
+The
+\fIzmq_recvmsg()\fR
+operation is not supported by this socket type\&.
+.RE
+.PP
+\fBEFSM\fR
+.RS 4
+The
+\fIzmq_recvmsg()\fR
+operation cannot be performed on this socket at the moment due to the socket not being in the appropriate state\&. This error may occur with socket types that switch between several states, such as ZMQ_REP\&. See the
+\fImessaging patterns\fR
+section of
+\fBzmq_socket\fR(3)
+for more information\&.
+.RE
+.PP
+\fBETERM\fR
+.RS 4
+The 0MQ
+\fIcontext\fR
+associated with the specified
+\fIsocket\fR
+was terminated\&.
+.RE
+.PP
+\fBENOTSOCK\fR
+.RS 4
+The provided
+\fIsocket\fR
+was invalid\&.
+.RE
+.PP
+\fBEINTR\fR
+.RS 4
+The operation was interrupted by delivery of a signal before a message was available\&.
+.RE
+.PP
+\fBEFAULT\fR
+.RS 4
+The message passed to the function was invalid\&.
+.RE
+.SH "EXAMPLE"
+.PP
+\fBReceiving a message from a socket\fR.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+/* Create an empty 0MQ message */
+zmq_msg_t msg;
+int rc = zmq_msg_init (&msg);
+assert (rc == 0);
+/* Block until a message is available to be received from socket */
+rc = zmq_recvmsg (socket, &msg, 0);
+assert (rc != \-1);
+/* Release message */
+zmq_msg_close (&msg);
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+\fBReceiving a multi-part message\fR.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+int64_t more;
+size_t more_size = sizeof (more);
+do {
+ /* Create an empty 0MQ message to hold the message part */
+ zmq_msg_t part;
+ int rc = zmq_msg_init (&part);
+ assert (rc == 0);
+ /* Block until a message is available to be received from socket */
+ rc = zmq_recvmsg (socket, &part, 0);
+ assert (rc != \-1);
+ /* Determine if more message parts are to follow */
+ rc = zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
+ assert (rc == 0);
+ zmq_msg_close (&part);
+} while (more);
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+.SH "SEE ALSO"
+.sp
+\fBzmq_recv\fR(3) \fBzmq_send\fR(3) \fBzmq_getsockopt\fR(3) \fBzmq_socket\fR(7) \fBzmq\fR(7)
+.SH "AUTHORS"
+.sp
+This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&.