Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
L
libzmq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
libzmq
Commits
eb9ff1e7
Commit
eb9ff1e7
authored
May 31, 2010
by
Martin Lucina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Documentation updates
Multi-part messages
parent
8becacf8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
2 deletions
+85
-2
zmq_getsockopt.txt
doc/zmq_getsockopt.txt
+17
-0
zmq_recv.txt
doc/zmq_recv.txt
+36
-1
zmq_send.txt
doc/zmq_send.txt
+32
-1
No files found.
doc/zmq_getsockopt.txt
View file @
eb9ff1e7
...
...
@@ -24,6 +24,23 @@ to by 'option_value'.
The following options can be retrieved with the _zmq_getsockopt()_ function:
ZMQ_RCVMORE: More message parts to follow
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_RCVMORE' option shall return a boolean value indicating if the
multi-part message currently being read from the specified 'socket' has more
message parts to follow. If there are no message parts to follow or if the
message currently being read is not a multi-part message a value of zero shall
be returned. Otherwise, a value of 1 shall be returned.
Refer to linkzmq:zmq_send[3] and linkzmq:zmq_recv[3] for a detailed description
of sending/receiving multi-part messages.
Option value type:: int64_t
Option value unit:: boolean
Default value:: N/A
Applicable socket types:: all
ZMQ_HWM: Retrieve high water mark
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_HWM' option shall retrieve the high water mark for the _message queue_
...
...
doc/zmq_recv.txt
View file @
eb9ff1e7
...
...
@@ -29,6 +29,23 @@ associated with 'socket', the _zmq_recv()_ function shall fail with 'errno' set
to EAGAIN.
Multi-part messages
~~~~~~~~~~~~~~~~~~~
A 0MQ message is composed of 1 to N message parts; each message part is an
independent 'zmq_msg_t' in its own right. Consequently, wherever this
documentation uses the term _message_ it may be substituted for _message part_.
An application wishing to determine if a message is composed of multiple parts
does so by retrieving the value of the _ZMQ_RCVMORE_ socket option on the
'socket' it is receiving the message from. If there are no message parts to
follow, or if the message is not composed of multiple parts, _ZMQ_RCVMORE_
shall report a value of zero. Otherwise, _ZMQ_RCVMORE_ shall report a value of
1, indicating that more message parts are to follow.
0MQ shall ensure the atomicity of a multi-part message; peers shall receive
either all _message parts_ of a multi-part message or none at all.
RETURN VALUE
------------
The _zmq_recv()_ function shall return zero if successful. Otherwise it shall
...
...
@@ -47,7 +64,7 @@ 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
_messaging patterns_ section of linkzmq:zmq_socket[3] for more information.
*ETERM*::
The
associated context was termin
ted.
The
0MQ 'context' associated with the specified 'socket' was termina
ted.
EXAMPLE
...
...
@@ -63,10 +80,28 @@ rc = zmq_recv (socket, &msg, 0);
assert (rc == 0);
----
.Receiving a multi-part message
----
int64_t 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 dequeued from socket */
rc = zmq_recv (socket, &part, 0);
assert (rc == 0);
/* Determine if more message parts are to follow */
rc = zmq_getsockopt (socket, ZMQ_RCVMORE, &more, sizeof more);
assert (rc == 0);
} while (more);
----
SEE ALSO
--------
linkzmq:zmq_send[3]
linkzmq:zmq_getsockopt[3]
linkzmq:zmq_socket[7]
linkzmq:zmq[7]
...
...
doc/zmq_send.txt
View file @
eb9ff1e7
...
...
@@ -23,12 +23,34 @@ Specifies that the operation should be performed in non-blocking mode. If the
message cannot be queued on the underlying _message queue_ associated with
'socket', the _zmq_send()_ function shall fail with 'errno' set to EAGAIN.
*ZMQ_SNDMORE*::
Specifies that the message being sent is a multi-part message, and that further
message parts are to follow. Refer to the section regarding multi-part messages
below for a detailed description.
NOTE: A successful invocation of _zmq_send()_ does not indicate that the
message has been transmitted to the network, only that it has been queued on
the _message queue_ associated with the socket and 0MQ has assumed
responsibility for the message.
Multi-part messages
~~~~~~~~~~~~~~~~~~~
A 0MQ message is composed of 1 to N message parts; each message part is an
independent 'zmq_msg_t' in its own right. Consequently, wherever this
documentation uses the term _message_ it may be substituted for _message part_.
An application wishing to send a multi-part message does so by specifying the
'ZMQ_SNDMORE' flag to _zmq_send()_. The presence of this flag indicates to 0MQ
that the message being sent is a multi-part message and that more message parts
are to follow. When the application wishes to send the final message part it
does so by calling _zmq_send()_ without the 'ZMQ_SNDMORE' flag; this indicates
that no more message parts are to follow. The total number of mess
0MQ shall ensure the atomicity of a multi-part message; peers shall receive
either all _message parts_ of a multi-part message or none at all.
RETURN VALUE
------------
The _zmq_send()_ function shall return zero if successful. Otherwise it shall
...
...
@@ -47,7 +69,7 @@ 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
_messaging patterns_ section of linkzmq:zmq_socket[3] for more information.
*ETERM*::
The
associated context was termin
ted.
The
0MQ 'context' associated with the specified 'socket' was termina
ted.
EXAMPLE
...
...
@@ -65,6 +87,15 @@ rc = zmq_send (socket, &msg, 0);
assert (rc == 0);
----
.Sending a multi-part message
----
/* Send a multi-part message consisting of three parts to socket */
rc = zmq_send (socket, &part1, ZMQ_SNDMORE);
rc = zmq_send (socket, &part2, ZMQ_SNDMORE);
/* Final part; no more parts to follow */
rc = zmq_send (socket, &part3, 0);
----
SEE ALSO
--------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment