mirror of
https://github.com/zeromq/libzmq.git
synced 2025-09-26 15:59:34 +02:00
add an option to check if the socket is thread safe
This commit is contained in:
parent
de018e8766
commit
34968771ca
@ -322,6 +322,7 @@ ZMQ_EXPORT uint32_t zmq_msg_get_routing_id(zmq_msg_t *msg);
|
||||
#define ZMQ_XPUB_VERBOSE_UNSUBSCRIBE 78
|
||||
#define ZMQ_CONNECT_TIMEOUT 79
|
||||
#define ZMQ_TCP_RETRANSMIT_TIMEOUT 80
|
||||
#define ZMQ_THREAD_SAFE 81
|
||||
|
||||
/* Message options */
|
||||
#define ZMQ_MORE 1
|
||||
|
@ -423,6 +423,19 @@ int zmq::socket_base_t::getsockopt (int option_, void *optval_,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (option_ == ZMQ_THREAD_SAFE) {
|
||||
if (*optvallen_ < sizeof (int)) {
|
||||
errno = EINVAL;
|
||||
EXIT_MUTEX();
|
||||
return -1;
|
||||
}
|
||||
memset(optval_, 0, *optvallen_);
|
||||
*((int*) optval_) = thread_safe ? 1 : 0;
|
||||
*optvallen_ = sizeof (int);
|
||||
EXIT_MUTEX();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rc = options.getsockopt (option_, optval_, optvallen_);
|
||||
EXIT_MUTEX();
|
||||
return rc;
|
||||
|
@ -41,6 +41,13 @@ int main (void)
|
||||
void *client = zmq_socket (ctx, ZMQ_CLIENT);
|
||||
void *client2 = zmq_socket (ctx, ZMQ_CLIENT);
|
||||
|
||||
int thread_safe;
|
||||
size_t size = sizeof(int);
|
||||
|
||||
zmq_getsockopt (client, ZMQ_THREAD_SAFE, &thread_safe, &size);
|
||||
|
||||
assert (thread_safe == 1);
|
||||
|
||||
int rc;
|
||||
|
||||
rc = zmq_bind (client, "tcp://127.0.0.1:5560");
|
||||
|
Loading…
x
Reference in New Issue
Block a user