mirror of
https://github.com/zeromq/libzmq.git
synced 2025-01-15 18:38:00 +08:00
Merge pull request #2639 from bluca/wine_doc
Problems: using Wine requires system tuning, ZMQ_BINDTODEVICE not draft
This commit is contained in:
commit
fda9daa200
11
INSTALL
11
INSTALL
@ -57,6 +57,17 @@ can cause substantial consumption of virtual address space, especially if
|
|||||||
Generally, programmer needs to tune the stack to balance memory consumption
|
Generally, programmer needs to tune the stack to balance memory consumption
|
||||||
but never get into situation that stack is overflown.
|
but never get into situation that stack is overflown.
|
||||||
|
|
||||||
|
Windows Builds - Wine
|
||||||
|
=====================
|
||||||
|
|
||||||
|
To use Windows binaries on *nix via Wine, it is necessary to ensure that the
|
||||||
|
kernel TCP buffers are large enough. On some systems, like OS X, they are too
|
||||||
|
small by default.
|
||||||
|
They need to be set to at least one MB as a workaround for issue:
|
||||||
|
https://github.com/zeromq/libzmq/issues/1608
|
||||||
|
|
||||||
|
sudo sysctl -w net.inet.tcp.sendspace=1300000
|
||||||
|
|
||||||
Basic Installation
|
Basic Installation
|
||||||
==================
|
==================
|
||||||
|
|
||||||
|
@ -368,7 +368,6 @@ ZMQ_EXPORT const char *zmq_msg_gets (const zmq_msg_t *msg, const char *property)
|
|||||||
#define ZMQ_VMCI_BUFFER_MAX_SIZE 87
|
#define ZMQ_VMCI_BUFFER_MAX_SIZE 87
|
||||||
#define ZMQ_VMCI_CONNECT_TIMEOUT 88
|
#define ZMQ_VMCI_CONNECT_TIMEOUT 88
|
||||||
#define ZMQ_USE_FD 89
|
#define ZMQ_USE_FD 89
|
||||||
#define ZMQ_BINDTODEVICE 90
|
|
||||||
|
|
||||||
/* Message options */
|
/* Message options */
|
||||||
#define ZMQ_MORE 1
|
#define ZMQ_MORE 1
|
||||||
@ -562,6 +561,9 @@ ZMQ_EXPORT void zmq_threadclose (void* thread);
|
|||||||
#define ZMQ_SCATTER 17
|
#define ZMQ_SCATTER 17
|
||||||
#define ZMQ_DGRAM 18
|
#define ZMQ_DGRAM 18
|
||||||
|
|
||||||
|
/* DRAFT Socket options. */
|
||||||
|
#define ZMQ_BINDTODEVICE 90
|
||||||
|
|
||||||
/* DRAFT 0MQ socket events and monitoring */
|
/* DRAFT 0MQ socket events and monitoring */
|
||||||
#define ZMQ_EVENT_HANDSHAKE_FAILED 0x0800
|
#define ZMQ_EVENT_HANDSHAKE_FAILED 0x0800
|
||||||
#define ZMQ_EVENT_HANDSHAKE_SUCCEED 0x1000
|
#define ZMQ_EVENT_HANDSHAKE_SUCCEED 0x1000
|
||||||
|
@ -101,6 +101,10 @@ void zmq::udp_engine_t::plug (io_thread_t* io_thread_, session_base_t *session_)
|
|||||||
io_object_t::plug (io_thread_);
|
io_object_t::plug (io_thread_);
|
||||||
handle = add_fd (fd);
|
handle = add_fd (fd);
|
||||||
|
|
||||||
|
// Bind the socket to a device if applicable
|
||||||
|
if (!options.bound_device.empty ())
|
||||||
|
bind_to_device (fd, options.bound_device);
|
||||||
|
|
||||||
if (send_enabled) {
|
if (send_enabled) {
|
||||||
if (!options.raw_socket) {
|
if (!options.raw_socket) {
|
||||||
out_address = address->resolved.udp_addr->dest_addr ();
|
out_address = address->resolved.udp_addr->dest_addr ();
|
||||||
@ -123,10 +127,6 @@ void zmq::udp_engine_t::plug (io_thread_t* io_thread_, session_base_t *session_)
|
|||||||
errno_assert (rc == 0);
|
errno_assert (rc == 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Bind the socket to a device if applicable
|
|
||||||
if (!options.bound_device.empty ())
|
|
||||||
bind_to_device (fd, options.bound_device);
|
|
||||||
|
|
||||||
rc = bind (fd, address->resolved.udp_addr->bind_addr (),
|
rc = bind (fd, address->resolved.udp_addr->bind_addr (),
|
||||||
address->resolved.udp_addr->bind_addrlen ());
|
address->resolved.udp_addr->bind_addrlen ());
|
||||||
#ifdef ZMQ_HAVE_WINDOWS
|
#ifdef ZMQ_HAVE_WINDOWS
|
||||||
|
@ -46,6 +46,9 @@
|
|||||||
#define ZMQ_SCATTER 17
|
#define ZMQ_SCATTER 17
|
||||||
#define ZMQ_DGRAM 18
|
#define ZMQ_DGRAM 18
|
||||||
|
|
||||||
|
/* DRAFT Socket options. */
|
||||||
|
#define ZMQ_BINDTODEVICE 90
|
||||||
|
|
||||||
/* DRAFT 0MQ socket events and monitoring */
|
/* DRAFT 0MQ socket events and monitoring */
|
||||||
#define ZMQ_EVENT_HANDSHAKE_FAILED 0x0800
|
#define ZMQ_EVENT_HANDSHAKE_FAILED 0x0800
|
||||||
#define ZMQ_EVENT_HANDSHAKE_SUCCEED 0x1000
|
#define ZMQ_EVENT_HANDSHAKE_SUCCEED 0x1000
|
||||||
|
@ -113,10 +113,11 @@ void test_setsockopt_use_fd ()
|
|||||||
#define BOUNDDEVBUFSZ 16
|
#define BOUNDDEVBUFSZ 16
|
||||||
void test_setsockopt_bindtodevice ()
|
void test_setsockopt_bindtodevice ()
|
||||||
{
|
{
|
||||||
int rc;
|
|
||||||
void *ctx = zmq_ctx_new ();
|
void *ctx = zmq_ctx_new ();
|
||||||
void *socket = zmq_socket (ctx, ZMQ_PUSH);
|
void *socket = zmq_socket (ctx, ZMQ_PUSH);
|
||||||
|
|
||||||
|
#ifdef ZMQ_BINDTODEVICE
|
||||||
|
int rc;
|
||||||
char devname[BOUNDDEVBUFSZ];
|
char devname[BOUNDDEVBUFSZ];
|
||||||
size_t buflen = BOUNDDEVBUFSZ;
|
size_t buflen = BOUNDDEVBUFSZ;
|
||||||
|
|
||||||
@ -137,6 +138,7 @@ void test_setsockopt_bindtodevice ()
|
|||||||
rc = zmq_getsockopt (socket, ZMQ_BINDTODEVICE, devname, &buflen);
|
rc = zmq_getsockopt (socket, ZMQ_BINDTODEVICE, devname, &buflen);
|
||||||
assert(rc == 0);
|
assert(rc == 0);
|
||||||
assert(!strncmp("testdev", devname, buflen));
|
assert(!strncmp("testdev", devname, buflen));
|
||||||
|
#endif
|
||||||
|
|
||||||
zmq_close (socket);
|
zmq_close (socket);
|
||||||
zmq_ctx_term (ctx);
|
zmq_ctx_term (ctx);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user