You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.8 KiB
111 lines
3.8 KiB
/* =========================================================================
|
|
zproxy - run a steerable proxy in the background
|
|
|
|
Copyright (c) the Contributors as noted in the AUTHORS file.
|
|
This file is part of CZMQ, the high-level C binding for 0MQ:
|
|
http://czmq.zeromq.org.
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
=========================================================================
|
|
*/
|
|
|
|
#ifndef __ZPROXY_H_INCLUDED__
|
|
#define __ZPROXY_H_INCLUDED__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// @interface
|
|
// Create new zproxy actor instance. The proxy switches messages between
|
|
// a frontend socket and a backend socket; use the FRONTEND and BACKEND
|
|
// commands to configure these:
|
|
//
|
|
// zactor_t *proxy = zactor_new (zproxy, NULL);
|
|
//
|
|
// Destroy zproxy instance. This destroys the two sockets and stops any
|
|
// message flow between them:
|
|
//
|
|
// zactor_destroy (&proxy);
|
|
//
|
|
// Note that all zproxy commands are synchronous, so your application always
|
|
// waits for a signal from the actor after each command.
|
|
//
|
|
// Enable verbose logging of commands and activity:
|
|
//
|
|
// zstr_send (proxy, "VERBOSE");
|
|
// zsock_wait (proxy);
|
|
//
|
|
// Specify frontend socket type -- see zsock_type_str () -- and attach to
|
|
// endpoints, see zsock_attach (). Note that a proxy socket is always
|
|
// serverish:
|
|
//
|
|
// zstr_sendx (proxy, "FRONTEND", "XSUB", endpoints, NULL);
|
|
// zsock_wait (proxy);
|
|
//
|
|
// Specify backend socket type -- see zsock_type_str () -- and attach to
|
|
// endpoints, see zsock_attach (). Note that a proxy socket is always
|
|
// serverish:
|
|
//
|
|
// zstr_sendx (proxy, "BACKEND", "XPUB", endpoints, NULL);
|
|
// zsock_wait (proxy);
|
|
//
|
|
// Capture all proxied messages; these are delivered to the application
|
|
// via an inproc PULL socket that you have already bound to the specified
|
|
// endpoint:
|
|
//
|
|
// zstr_sendx (proxy, "CAPTURE", endpoint, NULL);
|
|
// zsock_wait (proxy);
|
|
//
|
|
// Pause the proxy. A paused proxy will cease processing messages, causing
|
|
// them to be queued up and potentially hit the high-water mark on the
|
|
// frontend or backend socket, causing messages to be dropped, or writing
|
|
// applications to block:
|
|
//
|
|
// zstr_sendx (proxy, "PAUSE", NULL);
|
|
// zsock_wait (proxy);
|
|
//
|
|
// Resume the proxy. Note that the proxy starts automatically as soon as it
|
|
// has a properly attached frontend and backend socket:
|
|
//
|
|
// zstr_sendx (proxy, "RESUME", NULL);
|
|
// zsock_wait (proxy);
|
|
//
|
|
// Configure an authentication domain for the "FRONTEND" or "BACKEND" proxy
|
|
// socket -- see zsock_set_zap_domain (). Call before binding socket:
|
|
//
|
|
// zstr_sendx (proxy, "DOMAIN", "FRONTEND", "global", NULL);
|
|
// zsock_wait (proxy);
|
|
//
|
|
// Configure PLAIN authentication for the "FRONTEND" or "BACKEND" proxy
|
|
// socket -- see zsock_set_plain_server (). Call before binding socket:
|
|
//
|
|
// zstr_sendx (proxy, "PLAIN", "BACKEND", NULL);
|
|
// zsock_wait (proxy);
|
|
//
|
|
// Configure CURVE authentication for the "FRONTEND" or "BACKEND" proxy
|
|
// socket -- see zsock_set_curve_server () -- specifying both the public and
|
|
// secret keys of a certificate as Z85 armored strings -- see
|
|
// zcert_public_txt () and zcert_secret_txt (). Call before binding socket:
|
|
//
|
|
// zstr_sendx (proxy, "CURVE", "FRONTEND", public_txt, secret_txt, NULL);
|
|
// zsock_wait (proxy);
|
|
//
|
|
// This is the zproxy constructor as a zactor_fn; the argument is a
|
|
// character string specifying frontend and backend socket types as two
|
|
// uppercase strings separated by a hyphen:
|
|
CZMQ_EXPORT void
|
|
zproxy (zsock_t *pipe, void *unused);
|
|
|
|
// Selftest
|
|
CZMQ_EXPORT void
|
|
zproxy_test (bool verbose);
|
|
// @end
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|