summaryrefslogtreecommitdiff
path: root/doc/zmq_device.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/zmq_device.txt')
-rw-r--r--doc/zmq_device.txt143
1 files changed, 0 insertions, 143 deletions
diff --git a/doc/zmq_device.txt b/doc/zmq_device.txt
deleted file mode 100644
index d5d7a18..0000000
--- a/doc/zmq_device.txt
+++ /dev/null
@@ -1,143 +0,0 @@
-zmq_device(3)
-=============
-
-NAME
-----
-zmq_device - start built-in 0MQ device
-
-
-SYNOPSIS
---------
-*int zmq_device (int 'device', const void '*frontend', const void '*backend');*
-
-
-DESCRIPTION
------------
-The _zmq_device()_ function starts a built-in 0MQ device. The 'device'
-argument is one of:
-
-'ZMQ_QUEUE'::
- starts a queue device
-'ZMQ_FORWARDER'::
- starts a forwarder device
-'ZMQ_STREAMER'::
- starts a streamer device
-
-The device connects a frontend socket to a backend socket. Conceptually, data
-flows from frontend to backend. Depending on the socket types, replies may
-flow in the opposite direction.
-
-Before calling _zmq_device()_ you must set any socket options, and connect or
-bind both frontend and backend sockets. The two conventional device models
-are:
-
-* proxy model - accept inward connections to frontend socket (by binding it to
- an endpoint), and make onward connections through backend socket (connecting
- to endpoints on other nodes). A proxy device model can fit well into an
- existing topology.
-* broker model - accept connections on both frontend and backend sockets (by
- binding both to endpoints). A broker device model creates a star topology
- where nodes can come and go at any time.
-
-_zmq_device()_ runs in the current thread and returns only if/when the current
-context is closed.
-
-
-QUEUE DEVICE
-------------
-'ZMQ_QUEUE' creates a shared queue that collects requests from a set of
-clients, and distributes these fairly among a set of services. Requests are
-fair-queued from frontend connections and load-balanced between backend
-connections. Replies automatically return to the client that made the original
-request.
-
-This device is part of the 'request-reply' pattern. The frontend speaks to
-clients and the backend speaks to services. You should use 'ZMQ_QUEUE' with a
-'ZMQ_XREP' socket for the frontend and a 'ZMQ_XREQ' socket for the backend.
-Other combinations are not documented.
-
-Refer to linkzmq:zmq_socket[3] for a description of these socket types.
-
-
-FORWARDER DEVICE
-----------------
-'ZMQ_FORWARDER' collects messages from a set of publishers and forwards these
-to a set of subscribers. You will generally use this to bridge networks, e.g.
-read on TCP unicast and forward on multicast.
-
-This device is part of the 'publish-subscribe' pattern. The frontend speaks to
-publishers and the backend speaks to subscribers. You should use
-'ZMQ_FORWARDER' with a 'ZMQ_SUB' socket for the frontend and a 'ZMQ_PUB' socket
-for the backend. Other combinations are not documented.
-
-Refer to linkzmq:zmq_socket[3] for a description of these socket types.
-
-
-STREAMER DEVICE
----------------
-'ZMQ_STREAMER' collects tasks from a set of pushers and forwards these to a set
-of pullers. You will generally use this to bridge networks. Messages are
-fair-queued from pushers and load-balanced to pullers.
-
-This device is part of the 'pipeline' pattern. The frontend speaks to pushers
-and the backend speaks to pullers. You should use 'ZMQ_STREAMER' with a
-'ZMQ_PULL' socket for the frontend and a 'ZMQ_PUSH' socket for the backend.
-Other combinations are not documented.
-
-Refer to linkzmq:zmq_socket[3] for a description of these socket types.
-
-
-RETURN VALUE
-------------
-The _zmq_device()_ function shall not return if successful. Otherwise it shall
-return `-1` and set 'errno' to one of the values defined below.
-
-
-ERRORS
-------
-*ETERM*::
-The 0MQ 'context' associated with the specified 'frontend' or 'backend' was
-terminated.
-*EFAULT*::
-The provided 'frontend' or 'backend' was not valid (NULL).
-
-
-EXAMPLE
--------
-.Creating a queue broker
-----
-// Create frontend and backend sockets
-void *frontend = zmq_socket (context, ZMQ_XREP);
-assert (backend);
-void *backend = zmq_socket (context, ZMQ_XREQ);
-assert (frontend);
-// Bind both sockets to TCP ports
-assert (zmq_bind (frontend, "tcp://*:5555") == 0);
-assert (zmq_bind (backend, "tcp://*:5556") == 0);
-// Start a queue device
-zmq_device (ZMQ_QUEUE, frontend, backend);
-----
-
-.Creating a pubsub proxy
-----
-// Create frontend and backend sockets
-void *frontend = zmq_socket (context, ZMQ_SUB);
-assert (backend);
-void *backend = zmq_socket (context, ZMQ_PUB);
-assert (frontend);
-// Connect frontend to publisher
-assert (zmq_bind (frontend, "tcp://192.68.55.112:4444") == 0);
-// Bind backend to TCP port
-assert (zmq_bind (backend, "tcp://*:5556") == 0);
-// Start a forwarder device
-zmq_device (ZMQ_FORWARDER, frontend, backend);
-----
-
-
-SEE ALSO
---------
-linkzmq:zmq_bind[3]
-linkzmq:zmq_connect[3]
-linkzmq:zmq_socket[3]
-linkzmq:zmq[7]
-