Commit 185fed39 authored by Constantin Rack's avatar Constantin Rack Committed by GitHub

Merge pull request #2220 from bluca/zmq_msg_size

Problem: size of zmq_msg_t is not known to FFI wrappers
parents 3db69212 8a286bb8
0MQ version 4.2.1 stable, released on 201x/xx/xx 0MQ version 4.2.1 stable, released on 201x/xx/xx
============================================= =============================================
* New Context options:
- ZMQ_MSG_T_SIZE
0MQ version 4.2.0 stable, released on 2016/11/04 0MQ version 4.2.0 stable, released on 2016/11/04
============================================= =============================================
......
...@@ -57,6 +57,13 @@ zero if the "block forever on context termination" gambit was disabled by ...@@ -57,6 +57,13 @@ zero if the "block forever on context termination" gambit was disabled by
setting ZMQ_BLOCKY to false on all new contexts. setting ZMQ_BLOCKY to false on all new contexts.
ZMQ_MSG_T_SIZE: Get the zmq_msg_t size at runtime
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The 'ZMQ_MSG_T_SIZE' argument returns the size of the zmq_msg_t structure at
runtime, as defined in the include/zmq.h public header.
This is useful for example for FFI bindings that can't simply do a sizeof().
RETURN VALUE RETURN VALUE
------------ ------------
The _zmq_ctx_get()_ function returns a value of 0 or greater if successful. The _zmq_ctx_get()_ function returns a value of 0 or greater if successful.
......
...@@ -206,6 +206,9 @@ ZMQ_EXPORT void zmq_version (int *major, int *minor, int *patch); ...@@ -206,6 +206,9 @@ ZMQ_EXPORT void zmq_version (int *major, int *minor, int *patch);
#define ZMQ_THREAD_PRIORITY 3 #define ZMQ_THREAD_PRIORITY 3
#define ZMQ_THREAD_SCHED_POLICY 4 #define ZMQ_THREAD_SCHED_POLICY 4
#define ZMQ_MAX_MSGSZ 5 #define ZMQ_MAX_MSGSZ 5
// All options after this is for version 4.3 and still *draft*
// Subject to arbitrary change without notice
#define ZMQ_MSG_T_SIZE 6
/* Default for new contexts */ /* Default for new contexts */
#define ZMQ_IO_THREADS_DFLT 1 #define ZMQ_IO_THREADS_DFLT 1
......
...@@ -301,6 +301,9 @@ int zmq::ctx_t::get (int option_) ...@@ -301,6 +301,9 @@ int zmq::ctx_t::get (int option_)
else else
if (option_ == ZMQ_MAX_MSGSZ) if (option_ == ZMQ_MAX_MSGSZ)
rc = max_msgsz; rc = max_msgsz;
else
if (option_ == ZMQ_MSG_T_SIZE)
rc = sizeof (zmq_msg_t);
else { else {
errno = EINVAL; errno = EINVAL;
rc = -1; rc = -1;
......
...@@ -48,6 +48,7 @@ int main (void) ...@@ -48,6 +48,7 @@ int main (void)
#endif #endif
assert (zmq_ctx_get (ctx, ZMQ_IO_THREADS) == ZMQ_IO_THREADS_DFLT); assert (zmq_ctx_get (ctx, ZMQ_IO_THREADS) == ZMQ_IO_THREADS_DFLT);
assert (zmq_ctx_get (ctx, ZMQ_IPV6) == 0); assert (zmq_ctx_get (ctx, ZMQ_IPV6) == 0);
assert (zmq_ctx_get (ctx, ZMQ_MSG_T_SIZE) == sizeof (zmq_msg_t));
rc = zmq_ctx_set (ctx, ZMQ_IPV6, true); rc = zmq_ctx_set (ctx, ZMQ_IPV6, true);
assert (zmq_ctx_get (ctx, ZMQ_IPV6) == 1); assert (zmq_ctx_get (ctx, ZMQ_IPV6) == 1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment