From 597cc5edd624525563e6549dc0057eca2a51c81d Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Tue, 11 Nov 2014 13:30:46 -0500 Subject: upgrade to new version --- doc/zmq_proxy_steerable.html | 856 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 856 insertions(+) create mode 100644 doc/zmq_proxy_steerable.html (limited to 'doc/zmq_proxy_steerable.html') diff --git a/doc/zmq_proxy_steerable.html b/doc/zmq_proxy_steerable.html new file mode 100644 index 0000000..0240b85 --- /dev/null +++ b/doc/zmq_proxy_steerable.html @@ -0,0 +1,856 @@ + + + + + +zmq_proxy_steerable(3) + + + + + +
+
+

SYNOPSIS

+
+

int zmq_proxy_steerable (const void *frontend, const void *backend, + const void *capture, const void *control);

+
+
+
+

DESCRIPTION

+
+

The zmq_proxy_steerable() function starts the built-in ØMQ proxy in the +current application thread, as zmq_proxy() do. Please, refer to this function +for the general description and usage. We describe here only the additional +control flow provided by the socket passed as the fourth argument "control".

+

If the control socket is not NULL, the proxy supports control flow. If +PAUSE is received on this socket, the proxy suspends its activities. If +RESUME is received, it goes on. If TERMINATE is received, it terminates +smoothly. At start, the proxy runs normally as if zmq_proxy was used.

+

If the control socket is NULL, the function behave exactly as if zmq_proxy +had been called.

+

Refer to zmq_socket(3) for a description of the available socket types. +Refer to zmq_proxy(3) for a description of the zmq_proxy.

+
+
+
+

EXAMPLE USAGE

+
+

cf zmq_proxy

+
+
+
+

RETURN VALUE

+
+

The zmq_proxy_steerable() function returns 0 if TERMINATE is sent to its +control socket. Otherwise, it returns -1 and errno set to ETERM (the +ØMQ context associated with either of the specified sockets was terminated).

+
+
+
+

EXAMPLE

+
+
+
Creating a shared queue proxy
+
+
//  Create frontend, backend and control sockets
+void *frontend = zmq_socket (context, ZMQ_ROUTER);
+assert (backend);
+void *backend = zmq_socket (context, ZMQ_DEALER);
+assert (frontend);
+void *control = zmq_socket (context, ZMQ_SUB);
+assert (control);
+
+//  Bind sockets to TCP ports
+assert (zmq_bind (frontend, "tcp://*:5555") == 0);
+assert (zmq_bind (backend, "tcp://*:5556") == 0);
+assert (zmq_connect (control, "tcp://*:5557") == 0);
+
+// Subscribe to the control socket since we have chosen SUB here
+assert (zmq_setsockopt (control, ZMQ_SUBSCRIBE, "", 0));
+
+//  Start the queue proxy, which runs until ETERM or "TERMINATE"
+//  received on the control socket
+zmq_proxy_steerable (frontend, backend, NULL, control);
+
+
+
Set up a controller in another node, process or whatever
+
+
void *control = zmq_socket (context, ZMQ_PUB);
+assert (control);
+assert (zmq_bind (control, "tcp://*:5557") == 0);
+
+// pause the proxy
+assert (zmq_send (control, "PAUSE", 5, 0) == 0);
+
+// resume the proxy
+assert (zmq_send (control, "RESUME", 6, 0) == 0);
+
+// terminate the proxy
+assert (zmq_send (control, "TERMINATE", 9, 0) == 0);
+---
+
+
+SEE ALSO
+
+ +
+
+
+

AUTHORS

+
+

This page was written by the ØMQ community. To make a change please +read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.

+
+
+
+

+ + + -- cgit v1.2.3