diff options
author | Martin Sustrik <sustrik@fastmq.commkdir> | 2009-09-17 12:29:32 +0200 |
---|---|---|
committer | Martin Sustrik <sustrik@fastmq.commkdir> | 2009-09-17 12:29:32 +0200 |
commit | edecf75b611cf0e6b1c2658846cff013434edad4 (patch) | |
tree | d890e33111b562022c13e2ea1374be61f41e73ee /bindings | |
parent | 8cdf75327d847c464415ab32554d155febcf7c5e (diff) |
python binding checks ctx argument type
Diffstat (limited to 'bindings')
-rw-r--r-- | bindings/python/pyzmq.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/bindings/python/pyzmq.cpp b/bindings/python/pyzmq.cpp index 628d037..4bb5653 100644 --- a/bindings/python/pyzmq.cpp +++ b/bindings/python/pyzmq.cpp @@ -30,6 +30,8 @@ #pragma warning (disable:4996) #endif +extern PyTypeObject context_type; + struct context_t { PyObject_HEAD @@ -55,14 +57,14 @@ int context_init (context_t *self, PyObject *args, PyObject *kwdict) if (!PyArg_ParseTupleAndKeywords (args, kwdict, "ii", (char**) kwlist, &app_threads, &io_threads)) { PyErr_SetString (PyExc_SystemError, "invalid arguments"); - return -1; // ? + return -1; } assert (!self->handle); self->handle = zmq_init (app_threads, io_threads); if (!self->handle) { PyErr_SetString (PyExc_SystemError, strerror (errno)); - return -1; // ? + return -1; } return 0; @@ -79,6 +81,8 @@ void context_dealloc (context_t *self) self->ob_type->tp_free ((PyObject*) self); } +extern PyTypeObject socket_type; + struct socket_t { PyObject_HEAD @@ -100,18 +104,17 @@ int socket_init (socket_t *self, PyObject *args, PyObject *kwdict) context_t *context; int socket_type; static const char *kwlist [] = {"context", "type", NULL}; - if (!PyArg_ParseTupleAndKeywords (args, kwdict, "Oi", (char**) kwlist, - &context, &socket_type)) { + if (!PyArg_ParseTupleAndKeywords (args, kwdict, "O!i", (char**) kwlist, + &context_type, &context, &socket_type)) { PyErr_SetString (PyExc_SystemError, "invalid arguments"); - return NULL; + return -1; } - // TODO: Check whether 'context' is really a libpyzmq.Context object. assert (!self->handle); self->handle = zmq_socket (context->handle, socket_type); if (!self->handle) { PyErr_SetString (PyExc_SystemError, strerror (errno)); - return -1; // ? + return -1; } return 0; @@ -157,7 +160,6 @@ PyObject *socket_setsockopt (socket_t *self, PyObject *args, PyObject *kwdict) case ZMQ_IDENTITY: case ZMQ_SUBSCRIBE: case ZMQ_UNSUBSCRIBE: - rc = zmq_setsockopt (self->handle, option, PyString_AsString (optval), PyString_Size (optval)); break; @@ -309,7 +311,7 @@ static PyMethodDef context_methods [] = } }; -static PyTypeObject context_type = +PyTypeObject context_type = { PyObject_HEAD_INIT (NULL) 0, @@ -395,7 +397,7 @@ static PyMethodDef socket_methods [] = } }; -static PyTypeObject socket_type = +PyTypeObject socket_type = { PyObject_HEAD_INIT (NULL) 0, |