Changeset View
Changeset View
Standalone View
Standalone View
src/zmq/zmqpublishnotifier.cpp
Show All 26 Lines | static int zmq_send_multipart(void *sock, const void *data, size_t size, ...) { | ||||
va_start(args, size); | va_start(args, size); | ||||
while (1) { | while (1) { | ||||
zmq_msg_t msg; | zmq_msg_t msg; | ||||
int rc = zmq_msg_init_size(&msg, size); | int rc = zmq_msg_init_size(&msg, size); | ||||
if (rc != 0) { | if (rc != 0) { | ||||
zmqError("Unable to initialize ZMQ msg"); | zmqError("Unable to initialize ZMQ msg"); | ||||
va_end(args); | |||||
return -1; | return -1; | ||||
} | } | ||||
void *buf = zmq_msg_data(&msg); | void *buf = zmq_msg_data(&msg); | ||||
memcpy(buf, data, size); | memcpy(buf, data, size); | ||||
data = va_arg(args, const void *); | data = va_arg(args, const void *); | ||||
rc = zmq_msg_send(&msg, sock, data ? ZMQ_SNDMORE : 0); | rc = zmq_msg_send(&msg, sock, data ? ZMQ_SNDMORE : 0); | ||||
if (rc == -1) { | if (rc == -1) { | ||||
zmqError("Unable to send ZMQ msg"); | zmqError("Unable to send ZMQ msg"); | ||||
zmq_msg_close(&msg); | zmq_msg_close(&msg); | ||||
va_end(args); | |||||
return -1; | return -1; | ||||
} | } | ||||
zmq_msg_close(&msg); | zmq_msg_close(&msg); | ||||
if (!data) { | if (!data) { | ||||
break; | break; | ||||
} | } | ||||
size = va_arg(args, size_t); | size = va_arg(args, size_t); | ||||
} | } | ||||
va_end(args); | |||||
return 0; | return 0; | ||||
} | } | ||||
bool CZMQAbstractPublishNotifier::Initialize(void *pcontext) { | bool CZMQAbstractPublishNotifier::Initialize(void *pcontext) { | ||||
assert(!psocket); | assert(!psocket); | ||||
// check if address is being used by other publish notifier | // check if address is being used by other publish notifier | ||||
std::multimap<std::string, CZMQAbstractPublishNotifier *>::iterator i = | std::multimap<std::string, CZMQAbstractPublishNotifier *>::iterator i = | ||||
▲ Show 20 Lines • Show All 126 Lines • Show Last 20 Lines |