OK, I've knocked up a patch that demonstrates this functionality with the use of a sockopt ZMQ_DELAY_ATTACH_ON_CONNECT - I would really appreciate a review on it, to make sure I haven't borked anything, or done something horrible with session_base_t:
https://github.com/zeromq/libzmq/pull/357 The sample programme from Ben now appropriately balances to the one connected node: #include <cstdlib> #include <cstring> #include <iostream> #include "zmq.h" int main (void) { void *context = zmq_ctx_new(); int val = 1; void *to = zmq_socket(context, ZMQ_PULL); zmq_bind(to, "tcp://*:5555"); void *from = zmq_socket (context, ZMQ_PUSH); zmq_setsockopt(from, ZMQ_DELAY_ATTACH_ON_CONNECT, &val, sizeof(val)); zmq_connect(from, "tcp://localhost:5556"); zmq_connect(from, "tcp://localhost:5555"); for (int i = 0; i < 10; ++i) { std::string message("message "); message += ('0' + i); std::cout << "Sending " << message << std::endl; zmq_send(from, message.data(), message.size(), 0); } char buffer[16]; for (int i = 0; i < 10; ++i) { memset(&buffer, 0, sizeof(buffer)); zmq_recv(to, &buffer, sizeof(buffer), 0); std::cout << "Got " << buffer << std::endl; } zmq_close(from); zmq_close(to); zmq_ctx_destroy(context); return EXIT_SUCCESS; }
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
