GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  ZMQ_PROXY_STEERABLE (3)

.ds Aq ’

NAME

zmq_proxy_steerable - built-in 0MQ proxy with control flow

CONTENTS

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 0MQ 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 0MQ 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

zmq_proxy(3) zmq_bind(3) zmq_connect(3) zmq_socket(3) zmq(7)

AUTHORS

This page was written by the 0MQ community. To make a change please read the 0MQ Contribution Policy at \m[blue]http://www.zeromq.org/docs:contributing\m[].

Search for    or go to Top of page |  Section 3 |  Main Index


0MQ 4&.1&.4 ZMQ_PROXY_STEERABLE (3) 12/18/2015

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.