diff options
Diffstat (limited to 'bindings')
| -rw-r--r-- | bindings/c/zmq.h | 6 | ||||
| -rw-r--r-- | bindings/cpp/zmq.hpp | 4 | ||||
| -rw-r--r-- | bindings/java/Context.cpp | 4 | ||||
| -rw-r--r-- | bindings/java/org/zmq/Context.java | 8 | ||||
| -rw-r--r-- | bindings/python/pyzmq.cpp | 13 | ||||
| -rw-r--r-- | bindings/ruby/rbzmq.cpp | 11 | 
6 files changed, 29 insertions, 17 deletions
diff --git a/bindings/c/zmq.h b/bindings/c/zmq.h index 732ecb9..797d060 100644 --- a/bindings/c/zmq.h +++ b/bindings/c/zmq.h @@ -91,6 +91,10 @@ extern "C" {  //  the peer that the previous recv delivered message from.  #define ZMQ_REP 4 +//  Option specifying that the sockets should be pollable. This may be a little +//  less efficient that raw non-pollable sockets. +#define ZMQ_POLL 1 +  //  Prototype for the message body deallocation functions.  //  It is deliberately defined in the way to comply with standard C free.  typedef void (zmq_free_fn) (void *data); @@ -150,7 +154,7 @@ ZMQ_EXPORT int zmq_msg_type (struct zmq_msg_t *msg);  //  //  Errors: EINVAL - one of the arguments is less than zero or there are no  //                   threads declared at all. -ZMQ_EXPORT void *zmq_init (int app_threads, int io_threads); +ZMQ_EXPORT void *zmq_init (int app_threads, int io_threads, int flags);  //  Deinitialise 0MQ context including all the open sockets. Closing  //  sockets after zmq_term has been called will result in undefined behaviour. diff --git a/bindings/cpp/zmq.hpp b/bindings/cpp/zmq.hpp index 471d1d8..a9e63b5 100644 --- a/bindings/cpp/zmq.hpp +++ b/bindings/cpp/zmq.hpp @@ -180,9 +180,9 @@ namespace zmq      public: -        inline context_t (int app_threads_, int io_threads_) +        inline context_t (int app_threads_, int io_threads_, int flags_ = 0)          { -            ptr = zmq_init (app_threads_, io_threads_); +            ptr = zmq_init (app_threads_, io_threads_, flags_);              if (ptr == NULL)                  throw error_t ();          } diff --git a/bindings/java/Context.cpp b/bindings/java/Context.cpp index 67094e8..d2138c3 100644 --- a/bindings/java/Context.cpp +++ b/bindings/java/Context.cpp @@ -52,7 +52,7 @@ static void raise_exception (JNIEnv *env, int err)  }  JNIEXPORT void JNICALL Java_org_zmq_Context_construct (JNIEnv *env, jobject obj, -    jint app_threads, jint io_threads) +    jint app_threads, jint io_threads, jint flags)  {      if (ctx_handle_fid == NULL) {          jclass cls = env->GetObjectClass (obj); @@ -62,7 +62,7 @@ JNIEXPORT void JNICALL Java_org_zmq_Context_construct (JNIEnv *env, jobject obj,          env->DeleteLocalRef (cls);      } -    void *ctx = zmq_init (app_threads, io_threads); +    void *ctx = zmq_init (app_threads, io_threads, flags);      if (ctx == NULL) {          raise_exception (env, errno);          return; diff --git a/bindings/java/org/zmq/Context.java b/bindings/java/org/zmq/Context.java index c63ef60..408c6b0 100644 --- a/bindings/java/org/zmq/Context.java +++ b/bindings/java/org/zmq/Context.java @@ -24,14 +24,16 @@ public class Context {          System.loadLibrary("jzmq");      } +    public static final int POLL = 1; +      /**       * Class constructor.       *       * @param appThreads maximum number of application threads.       * @param ioThreads size of the threads pool to handle I/O operations.       */ -    public Context (int appThreads, int ioThreads) { -        construct (appThreads, ioThreads); +    public Context (int appThreads, int ioThreads, int flags) { +        construct (appThreads, ioThreads, flags);      }      /** @@ -40,7 +42,7 @@ public class Context {      public native long createSocket (int type);      /** Initialize the JNI interface */ -    protected native void construct (int appThreads, int ioThreads); +    protected native void construct (int appThreads, int ioThreads, int flags);      /** Free resources used by JNI driver. */      protected native void finalize (); diff --git a/bindings/python/pyzmq.cpp b/bindings/python/pyzmq.cpp index 4bb5653..32f30fe 100644 --- a/bindings/python/pyzmq.cpp +++ b/bindings/python/pyzmq.cpp @@ -53,15 +53,16 @@ int context_init (context_t *self, PyObject *args, PyObject *kwdict)  {      int app_threads;      int io_threads; -    static const char *kwlist [] = {"app_threads", "io_threads", NULL}; -    if (!PyArg_ParseTupleAndKeywords (args, kwdict, "ii", (char**) kwlist, -          &app_threads, &io_threads)) { +    int flags = 0; +    static const char *kwlist [] = {"app_threads", "io_threads", "flags", NULL}; +    if (!PyArg_ParseTupleAndKeywords (args, kwdict, "ii|i", (char**) kwlist, +          &app_threads, &io_threads, &flags)) {          PyErr_SetString (PyExc_SystemError, "invalid arguments");          return -1;      }      assert (!self->handle); -    self->handle = zmq_init (app_threads, io_threads); +    self->handle = zmq_init (app_threads, io_threads, flags);      if (!self->handle) {          PyErr_SetString (PyExc_SystemError, strerror (errno));          return -1; @@ -522,7 +523,9 @@ PyMODINIT_FUNC initlibpyzmq ()      t = PyInt_FromLong (ZMQ_MCAST_LOOP);      PyDict_SetItemString (dict, "MCAST_LOOP", t);      Py_DECREF (t); - +    t = PyInt_FromLong (ZMQ_POLL); +    PyDict_SetItemString (dict, "POLL", t); +    Py_DECREF (t);  }  #if defined _MSC_VER diff --git a/bindings/ruby/rbzmq.cpp b/bindings/ruby/rbzmq.cpp index bf0d9bc..83bb2b6 100644 --- a/bindings/ruby/rbzmq.cpp +++ b/bindings/ruby/rbzmq.cpp @@ -38,10 +38,11 @@ static VALUE context_alloc (VALUE class_)  }  static VALUE context_initialize (VALUE self_, VALUE app_threads_, -    VALUE io_threads_) +    VALUE io_threads_, VALUE flags_)  {      assert (!DATA_PTR (self_)); -    void *ctx = zmq_init (NUM2INT (app_threads_), NUM2INT (io_threads_)); +    void *ctx = zmq_init (NUM2INT (app_threads_), NUM2INT (io_threads_), +        NUM2INT (flags_));      if (!ctx) {          rb_raise (rb_eRuntimeError, strerror (errno));          return Qnil; @@ -105,8 +106,8 @@ static VALUE socket_setsockopt (VALUE self_, VALUE option_,              rc = zmq_setsockopt (DATA_PTR (self_), NUM2INT (option_),                   (void *) &optval, 4);          } -          break; +      case ZMQ_IDENTITY:      case ZMQ_SUBSCRIBE:      case ZMQ_UNSUBSCRIBE: @@ -236,7 +237,7 @@ extern "C" void Init_librbzmq ()      VALUE context_type = rb_define_class ("Context", rb_cObject);      rb_define_alloc_func (context_type, context_alloc);      rb_define_method (context_type, "initialize", -        (VALUE(*)(...)) context_initialize, 2); +        (VALUE(*)(...)) context_initialize, 3);      VALUE socket_type = rb_define_class ("Socket", rb_cObject);      rb_define_alloc_func (socket_type, socket_alloc); @@ -274,4 +275,6 @@ extern "C" void Init_librbzmq ()      rb_define_global_const ("PUB", INT2NUM (ZMQ_PUB));      rb_define_global_const ("REQ", INT2NUM (ZMQ_REQ));      rb_define_global_const ("REP", INT2NUM (ZMQ_REP)); + +    rb_define_global_const ("POLL", INT2NUM (ZMQ_POLL));  }  | 
